与下划线相反._without(数组,值)

时间:2015-12-28 09:30:56

标签: javascript arrays underscore.js

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的所有值。

3 个答案:

答案 0 :(得分:3)

这是我发现的:

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 ]

答案 1 :(得分:0)

underscore方式

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

使用_.filter方法

如果没有underscorees5),您可以Array#filter使用非常好的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]

答案 2 :(得分:0)

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

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

或者如果你的args在数组中:

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