Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to create Object key & value in JavaScript dynamically from array string

I want to create a JavaScript object dynamically from two arrays of strings. One array is used for the key and another for the value. e.g. it should create *element.name="xyz";*etc

 var key=["name","id","surname"];
 var value=[["xyz","01","abc"],["def","02","ghi"]]; 
 var element=new Object();

from the above value it should create an object like this:

    var element=new Object();
    element.name="xyz";
    element.id="01";
    element.surname="abc";

    var element =new Object();
    element.name="def";
    element.id="02";
    element.surname="ghi";
like image 475
Neerav Shah Avatar asked Feb 22 '26 01:02

Neerav Shah


2 Answers

I would go like this :

var value=[["xyz","01","abc"],["def","02","ghi"]]; // notice it's an array of array instead of an array of objects

var elements = [];

for (var i = 0; i< value.length; i++) {
    var elem = new Object();
    for (var j=0; j< key.length; j++) {
        elem[key[j]] = value[i][j];
    }
    elements.push(elem);
}
like image 119
simdrouin Avatar answered Feb 23 '26 16:02

simdrouin


You can use map and reduce functions to get your result. Map will flatten out array of arrays, and reduce will create object for each array

const key = ['name', 'id', 'surname']
const values = [
  ['xyz', '01', 'abc'],
  ['def', '02', 'ghi']
]

const result = values.map(row =>
  row.reduce((acc, cur, i) =>
    (acc[key[i]] = cur, acc), {}))

console.log(result)
like image 25
Vlad Bezden Avatar answered Feb 23 '26 14:02

Vlad Bezden