我正在尝试找到两个数组的区别,但是数组中允许重复,所以我想一次只删除一个。
通过示例可能更容易显示。 _.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的有效方法是什么呢?
答案 0 :(得分:2)
这个混合我想出了作品..但是对如何改进它的建议持开放态度:
_.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]