合并两个数组并返回不在第一个数组中的项

时间:2014-09-04 08:32:29

标签: javascript underscore.js lodash

我有这个数组:

categories = ['Cat A', 'Cat B', 'Cat C', 'Cat D']

这个数组:

selectedCategories = ['Cat A', 'Cat D']

我想从这两个产生一个新数组:

categoriesAvailableToAdd = ['Cat B', 'Cat C']

是否有一些整齐的下划线/低速划线技巧可以做到这一点?找不到任何。必须是一项共同的任务吗?

3 个答案:

答案 0 :(得分:1)

您可以使用_.difference功能,就像这样

console.log(_.difference(categories, selectedCategories));
# [ 'Cat B', 'Cat C' ]

答案 1 :(得分:0)

_.difference

_.difference([1, 2, 3, 4, 5], [5, 2, 10]);
// → [1, 3, 4]

答案 2 :(得分:0)

filter可以array existence lookup function

Array.prototype.diff = function(a) {
    return this.filter(function(i) {return a.indexOf(i) < 0;});
};

你的例子:

var categories = ['Cat A', 'Cat B', 'Cat C', 'Cat D'];
var selectedCategories = ['Cat A', 'Cat D'];
categories.diff(selectedCategories);
// => ['Cat B', 'Cat C']