gpt4 book ai didi

javascript - 试图找到一种使用函数式编程风格转换此数组的漂亮方法

转载 作者:行者123 更新时间:2023-11-30 12:58:25 33 4
gpt4 key购买 nike

给定一个像这样的对象数组:

[
{ x: 'x1', y: 'y1' },
{ y: 'y2', z: 'z1' },
{ z: 'z2', x: 'x2' }
]

我想生成这样的对象:

{
x: [ 'x1', 'x2' ],
y: [ 'y1', 'y2' ],
z: [ 'z1', 'z2' ]
}

我正在寻找使用 ES5 或 underscore.js 函数(如 map/reduce 等)的 JavaScript 函数式编程风格解决方案。

最佳答案

也许像下面这样?

var array = [ { x: 'x1', y: 'y1' },
{ y: 'y2', z: 'z1' },
{ z: 'z2', x: 'x2' }
];

var result = array.reduce(function(res, obj) {
Object.keys(obj).map(function(k) {
if (!res[k])
res[k] = [];
res[k].push(obj[k]);
});
return res;
}, {});

请注意,我认为大多数人会发现这比循环方法更令人困惑:

var result = {};
for (var i = 0; i < array.length; i++) {
for (var k in array[i]) {
if (!result[k])
result[k] = [];
result[k].push(array[i][k]);
}
}

关于javascript - 试图找到一种使用函数式编程风格转换此数组的漂亮方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237659/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com