我需要以一种非常特定的方式收集数据。现在,数据以N个数组(数组)的形式出现,所有数组的长度都是M。对于给定的调用,M对于所有数组都是相同的。
所以下面的例子有N=2和M=3。最后嵌套数组的长度是可变的,可以是0或更大(但它将是长度为零的空数组)
[
[
['a', 'b'], ['c'], ['d']
],
[
['e'], ['f', 'g'], ['h']
]
]
我需要的是
[['a', 'b', 'e'], ['c', 'f', 'g'], ['d', 'h']]
我可以得到一个可行的答案,但它的毛,我希望有人有一个更优雅的方法。
以下是(某种)工作解决方案:
const gatheredData = [[]];
const final = _.forEach(startData, (array, arrayIndex) => {
// This is intended to handle the basecase creation of empty arrays
if (_.size(gatheredData) < arrayIndex) {
gatheredData.concat([]);
}
gatheredData[arrayIndex].concat(array);
});
在我还没有深入研究的边缘情况下,这似乎也是错误的。
2条答案
按热度按时间pvabu6sv1#
您可以使用
mergeWith
eqqqjvef2#
一个没有lodash的选项是首先Map数组中的嵌套数组,其中对于每个内部(叶)数组(例如:
['a', 'b']
),你连接一个数组,该数组包含同一索引处的所有内部元素(你可以通过Map所有其他数组来获得),例如: