【发布时间】:2017-02-07 19:10:33
【问题描述】:
我有一些数据:
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()中仍然需要迭代每个对象键 -
好吧,简化是一个坏词——缩短是一个更好的词。
标签: javascript arrays node.js mapreduce