Given arrays
name ['a','b','c']
data [1 , 2 , 3]
I want the result
[{name: 'a', data: 1}, {name: 'b', data: 2}, {name: 'c', data: 3}],
I could do
let combinedData = [];
for (let i = 0; i < data.length; i++) {
combinedData.push({name: name[i], data: data[i]});
}
but I am looking for an elegant way, shot. (Using external lib is acceptable e.g. lodash)
asked Jun 25, 2017 at 22:16
barha
6991 gold badge8 silver badges25 bronze badges
3 Answers 3
You can use Array.map:
let name = ['a','b','c'];
let data = [1,2,3];
let combined = name.map((v, i) => ({name: v, data: data[i]}));
console.log(combined);
Sign up to request clarification or add additional context in comments.
Comments
A simple es6 solution could be:
let arr1 = ...;
let arr2 = ...;
let data = arr1.map((item, i) => ({a: item, b: arr2[i]}));
answered Jun 25, 2017 at 22:23
Shane
3,2091 gold badge19 silver badges18 bronze badges
let combinedData ={};
let name = ['a','b','c'];
let data = [1 , 2 , 3];
for (let i = 0; i < data.length; i++) {
combinedData[name[i]]=data[i];
}
console.log(combinedData);
answered Jun 25, 2017 at 22:35
Osama
3,0301 gold badge15 silver badges16 bronze badges
1 Comment
barha
I was looking for "[{name: 'a', data: 1}, {name: 'b', data: 2}, {name: 'c', data: 3}]", not {a: 1, b: 2, c: 3}, thanks anyways :)
lang-js