У меня есть некоторые данные:Используя карту() и/или уменьшить(), чтобы упростить Foreach() заявление в узле (или родной JavaScript)
var rows = [{
name: "name1",
description: "description1",
value: 101
}, {
name: "name2",
description: "description2",
value: 202
}]
чисто для удовольствия, я хотел бы превратите это в матрицу объектных ключей, содержащих массивы совпадающих точек данных. Вот один вкладыш я начала работать, используя forEach()
:
var o = {}
rows.forEach(row => Object.keys(row).forEach(key => (o[key] === undefined) ? o[key] = [row[key]] : o[key].push(row[key])))
console.log(o)
/*
{
name: ['name1', 'name2'],
description: ['description1', 'description2'],
value: [101, 202]
}
*/
У меня есть чувство, что я могу еще сократить это выражение с помощью map()
и/или reduce()
, но я до сих пор полностью загнаны в угол!
Также предположим, что ключи согласованы, но не всегда известны.
не будет значительно упрощать его ... все равно нужно перебирать все ключи объектов даже в 'reduce()' – charlietfl
. Хорошо, упростить - это плохое слово. Сокращение - это лучшее. – brandonscript