使用lodash的数组内联盟

时间:2016-05-18 23:26:13

标签: javascript arrays node.js promise lodash

如何使用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);
});

4 个答案:

答案 0 :(得分:6)

使用apply方法将数组值作为参数传递:

var union = _.union.apply(null, arrayOfArrayElements);

[https://jsfiddle.net/qe5n89dh/]

答案 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