我试图找出两个数组的不同之处,但数组中允许存在重复项,因此我希望一次只删除一个。
这可能更容易用一个例子来说明。_.difference函数的工作方式如下:
_.difference([1, 1, 2], [1]); // returns [2]但我想知道是否有一个函数(最好是下划线)可以做到这一点:
_.difference2([1, 1, 2], [1]); // returns [1, 2]
_.difference2([1, 1, 2], [1, 1]); // returns [2]如果还没有一种方法可以做到这一点,那么制作一个能够做到这一点的mixin的有效方法是什么呢?
发布于 2014-07-17 02:29:25
我想出的这个混音器是有效的..但对如何改进它的建议持开放态度:
_.mixin({
remove: function(base, toRemove) {
var ret = [];
toRemove = _.clone(toRemove);
_.each(base, function(elem) {
var i = _.indexOf(toRemove, elem);
if(i < 0) {
ret.push(elem);
} else {
toRemove[i] = undefined;
}
});
return ret;
}
});
_.remove([1, 1, 2], [1]); // returns [1, 2]
_.remove([1, 1, 2], [1, 1]); // returns [2]https://stackoverflow.com/questions/24787920
复制相似问题