如何使用lodash将数组合并到数组中?
例如:
输入:
var x = [ [1,2,3,4], [5,6,7], [], [8,9], [] ];
预期产出:
x = [1,2,3,4,5,6,7,8,9];
目前我的代码执行以下操作:
return promise.map(someObjects, function (object)) {
return anArrayOfElements();
}).then(function (arrayOfArrayElements) {
// I tried to use union but it can apply only on two arrays
_.union(arrayOfArrayElements);
});
答案 0 :(得分:6)
使用apply
方法将数组值作为参数传递:
var union = _.union.apply(null, arrayOfArrayElements);
答案 1 :(得分:3)
我能想到的最简单的解决方案就是使用concat
:
Array.prototype.concat.apply([], [ [1,2,3,4], [5,6,7],[], [8,9], []]);
会产生......
[ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
答案 2 :(得分:3)
为我工作的答案,所有其他答案都有效,但当我检查其他帖子时,他们只是使用了loadash。我不知道在帖子中提供的所有答案的最佳语法是什么。 现在使用以下方法
_.uniq(_.flatten(x)); // x indicates arrayOfArrayObjects
// or, using chain
_(x).flatten().uniq().value();
感谢大家的回答。 :)
答案 3 :(得分:1)
使用原生函数reduce
arr.reduce(function(previousValue, currentValue) {
return previousValue.concat(currentValue);
}, []);
这会将reduce回调函数应用于数组的每个元素,并根据您显示的用例减少它。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce