создание объекта массивов и значений из массива объектов, содержащих массивы и значения в JavaScript

1

В следующем фрагменте кода я собираю переменные из массива объектов, а затем объединяю их в один новый объект с другими переменными. Вот упрощенный пример:

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?

Теги:
object
arrays

1 ответ

2
Лучший ответ

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);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню