与下划线相反 ._without(array, value)

Opposite of underscore ._without(array, value)

查看 underscore array methods,我看不出我想要完成什么。

这将从数组中删除 01

_.without([1, 2, 1, 0, 3, 1, 4], 0, 1);
=> [2, 3, 4]

如果我只需要 01 怎么办?

=> [1, 1, 0 ,1]

Underscorde 会让我写更少的 javascript 代码。

清晰度:

例如,如果 0, 1 在数组中,则保留 10 的所有值。

underscore 方式

var zerosones = _.filter([1, 2, 1, 0, 3, 1, 4], function(num){ 
    return (num === 0 || num === 1); 
});
=> [1, 1, 0, 1]

使用_.filter方法

没有 underscore ( es5 ) 你可以使用 Array#filter with a pretty good compatibility

var completeArray = [1, 2, 1, 0, 3, 1, 4];
completeArray =  completeArray.filter(function(value){ 
   return (value === 1 || value === 0) 
});

console.log(completeArray); //[1, 1, 0, 1]

这是我发现的:

var allArray = [1, 2, 1, 0, 3, 1, 4];
var leaveOnly = [1, 0];

var result = _.filter(allArray, _.partial(_.contains, leaveOnly)); // [1, 1, 0, 1]

_.filter, _.contains, _.partial

JSFiddle:https://jsfiddle.net/eeLcrmvt/

如果你打算经常使用它,你可以创建一个 mixin:

_.mixin({
  filterOut: function(arr, leave) {
    return _.filter(arr, _.partial(_.contains, leave))
  }
});

var result = _.filterOut([ 1, 2, 0, 1, 4, 3, 1 ], [ 0, 1 ]);

console.log(result); // [ 1, 0, 1, 1 ]

我找到的最简单的 underscore 方法是:

var arr = [1, 2, 1, 0, 3, 1, 4];
console.log(_.difference(arr, _.without(arr, 1, 0)));

或者如果您的参数在数组中:

console.log(_.difference(arr, _.difference(arr, [1, 0])));