В следующем фрагменте кода я собираю переменные из массива объектов, а затем объединяю их в один новый объект с другими переменными. Вот упрощенный пример:
var y = 10;
var x = [
{name: "name1", values:[1,2,3]},
{name: "name2", values:[3,4,5]}
];
var newObj = {y:[],x:[]}
for (var j=0;j<x.length;j++){
newObj.x.push([])
for (var i=0;i<x[j].values.length;i++){
newObj.x[j].push(x[j].values[i]);
}
}
newObj.y=y
console.log(newObj)
Это работает для того, что я делаю, но я уверен, что это даже не удаленные рекомендации. Что было бы более элегантным способом организации массива значений из x в новый объект с единственным значением для y?
ES6:
Вы можете использовать Array.map()
для получения массива значений x
и назначить y
с помощью вычисленных имен свойств.
Примечание. Я использую функцию со стрелкой ES6 и деструктурирование объекта в обратном вызове карты, но это не обязательно. См. Версию ES5.
const y = 10;
const x = [
{name: "name1", values:[1,2,3]},
{name: "name2", values:[3,4,5]}
];
const result = {
y,
x: x.map(({ values }) => values) // [...values] if you want a copy of the original values
};
console.log(result);
ES5:
Используйте Array.map()
для получения значений x
:
var y = 10;
var x = [
{name: "name1", values:[1,2,3]},
{name: "name2", values:[3,4,5]}
];
var result = {
y: y,
x: x.map(function(o) {
return o.values; // values.slice(0) if you want a copy of the original values
})
};
console.log(result);