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";
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);
}
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With