Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сборка массива из объектов (https://javascript.ru/forum/misc/76462-sborka-massiva-iz-obektov.html)

Роман Андреевич 14.01.2019 06:50

Сборка массива из объектов
 
Коллеги, доброго времени суток,
Вопрос такой, есть массив, внутри которого массивы с данными, например:

let arr = [[1,2,3,4,5,6], [4,5,6,2,1,5]]; // ... до бесконечности


мне нужно собрать массив:

let obj = { // это пример - шаблон, элемента массива
summ: 0,
age: 0,
o: 0,
name: 0,
stat: 0,
door: 0
};

// далее, нужно собрать такой массив


let result = [
{
summ: 1,
age: 2,
o: 3,
name: 4,
stat: 5,
door: 6
},
{
summ: 4,
age: 5,
o: 6,
name: 2,
stat: 1,
door: 5
}
];


Нужно собрать массив result, который будет состоять из объектов, типа obj, свойства которого будут заполняться значения элементов массива arr.
Прошу помощи, заранее благодарю

destus 14.01.2019 07:00

arr.map(([summ, age, o, name, stat, door]) => ({summ, age, o, name, stat, door}))

Роман Андреевич 14.01.2019 07:14

destus, спасибо)))

Только, тогда уж подскажите еще, у меня в функцию передается obj и изначально его свойства не известны.
Как через цикл собрать массив????

build(arr, {

    summ : false,
    age : false,
    o : false,
    name : false,
    stat : false,
    door : false

});

build(inputArr, obj) {

		let result = [];

	                result = result.map(([summ, age, o, name, stat, door]) => ({summ, age, o, name, stat, door}));

	}

destus 14.01.2019 07:44

попробуй так
const build = (arr, template) => {
    const keys = Object.keys(template);
    return arr.map(data => {
        return keys.reduce((acc, key, i) => {
            return {
                ...acc,
                [key]: data[i]
            }
        }, {})
    })
}

let arr = [
    [1, 2, 3, 4, 5, 6],
    [4, 5, 6, 2, 1, 5]
];
let obj = {
    summ: false,
    age: false,
    o: false,
    name: false,
    stat: false,
    door: false
}
const result = build(arr, obj);
console.log(result);

Роман Андреевич 14.01.2019 08:54

destus, огонь, спасибо))))

SuperZen 14.01.2019 12:36

мои 50 копеек %)

let arr = [[1, 2, 3, 4, 5, 6], [4, 5, 6, 2, 1, 8]]

let obj = {
  summ: false,
  age: false,
  o: false,
  name: false,
  stat: false,
  door: false
}

build = (arr, obj) => {
  let keys = Object.keys(obj)
  return arr.map(row => row.reduce((p, c, i) => (p[keys[i]] = c) && p, {}))
}

console.log(build(arr, obj))


Часовой пояс GMT +3, время: 01:03.