看underscore array methods,我看不到我想要完成的事情。
这会从数组中删除0
和1
:
_.without([1, 2, 1, 0, 3, 1, 4], 0, 1);
=> [2, 3, 4]
如果我只需要0
和1
=> [1, 1, 0 ,1]
Underscorde会让我写更少的javascript代码。
净度:
示例如果0, 1
在数组中,则保留1
和0
的所有值。
答案 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]
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方法
如果没有underscore
(es5
),您可以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])));