您也可以使用lodash 中的zip。由于该函数采用一系列参数并且您有一个数组,因此您需要使用 ... 展开数组
const _ = require("lodash");
const arrData = [[1,2,4,6],[3,8,7],[12,13],[],[9,10]];
const z = _.zip(...arrData)
这将为您提供以下结果:
[
[ 1, 3, 12, undefined, 9 ],
[ 2, 8, 13, undefined, 10 ],
[ 4, 7, undefined, undefined, undefined ],
[ 6, undefined, undefined, undefined, undefined ]
]
您已经可以看到它的顺序是您想要的。现在来收拾东西。您可以以最简单的形式使用flatMap 来展平数组。
// lodash
const fm = _.flatMap(z)
// or with Array.prototype.flat()
const fm = z.flat()
这将为您提供一个数组。
[
1, 3, 12,
undefined, 9, 2,
8, 13, undefined,
10, 4, 7,
undefined, undefined, undefined,
6, undefined, undefined,
undefined, undefined
]
现在您只需要通过过滤(保留)所有不是undefined 的元素来删除所有undefined 元素。
// lodash
_.filter(fm, _.negate(_.isUndefined))
你有你的最终结果。
[1, 3, 12, 9, 2, 8, 13, 10, 4, 7, 6]
有很多方法可以解决这个问题,因此您需要根据您的具体情况做出决定,并在简单性、代码易读性、效率等方面取得平衡。