14.01.2019, 06:50
|
Профессор
|
|
Регистрация: 12.08.2016
Сообщений: 299
|
|
Сборка массива из объектов
Коллеги, доброго времени суток,
Вопрос такой, есть массив, внутри которого массивы с данными, например:
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.
Прошу помощи, заранее благодарю
|
|
14.01.2019, 07:00
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
arr.map(([summ, age, o, name, stat, door]) => ({summ, age, o, name, stat, door}))
|
|
14.01.2019, 07:14
|
Профессор
|
|
Регистрация: 12.08.2016
Сообщений: 299
|
|
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}));
}
Последний раз редактировалось Роман Андреевич, 14.01.2019 в 07:20.
|
|
14.01.2019, 07:44
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
попробуй так
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
|
Профессор
|
|
Регистрация: 12.08.2016
Сообщений: 299
|
|
destus, огонь, спасибо))))
|
|
14.01.2019, 12:36
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
мои 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))
|
|
|
|