【发布时间】:2017-07-05 09:24:00
【问题描述】:
这是我的输入:
var toto=[
[
{ "a": "24" },
{ "a": "23.9"},
{ "a": "NaN"},
{ "a": "3" }
],
[
{"b": "19"},
{"b": "20"},
{"b": "NaN"},
{"b": "3" }
],
[
{"c": "27"},
{"c": "28"},
{"c": "NaN"},
{"c": "3" }
]
];
所有对象数组都保证包含相同数量的对象。
我想在输出中获得:
var out = [
{ "a": "24", "b": "19", "c":"27" },
{ "a": "23.9", "b": "20", "c":"28"},
{ "a": "NaN", "b": "NaN", "c":"NaN"},
{ "a": "3", "b": "3", "c": "3"}
]
也就是说,对于每个内部数组,取出第 N 个元素并将其合并为一个对象,并将其推送到一个结果数组中。
我有一个“脑死”解决方案,它在第一个子数组上迭代,然后在其他数组上迭代:
var out = [];
$(toto[0]).each(function(i, item) {
var o = {};
$(toto).each(function( j, array) {
var item = array[i];
o[Object.keys(item)[0]] = Object.values(item)[0];
});
out.push(o);
});
它有效,但它有点可怕,我想知道是否有使用函数方法(如 map 和 reduce)的解决方案。
你们知道吗?
【问题讨论】:
标签: javascript arrays merge reduce