考虑Array.prototype.every()函数,
如何获取falsy元素?例如
function isBigEnough(element, index, array) {
return element >= 10;
}
[12, 5, 8, 130, 44].every(isBigEnough); // get the element "5" (falsy)
您可以使用过滤器:
function tooSmall(element){
return element < 10
}
[12, 5, 8, 130, 44].filter(tooSmall) // gives [5, 8]
[12, 5, 8, 130, 44].filter(tooSmall)[0] // gives the first element ie 5
如果你想坚持使用太大的功能,那么你可以使用:
function not(fn) {
return function(){
return !fn.apply({},arguments)
}
}
[12, 5, 8, 130, 44].filter(not(isBigEnough)) // [5, 8]
我同意您想要使用过滤器的其他答案/注释。然而,我从另一个方面对你的问题有不同的解释。我如何理解你的问题是,一旦你过滤到bigEnough
,你怎么能过滤到不够大的。
对此的一个答案是使用下划线的_.difference
方法:
var entireArray = [12, 5, 8, 130, 44];
var bigEnoughVals = entireArray.filter(isBigEnough);
var tooSmallVals = _.difference(entireArray, bigEnoughVals);
function isBigEnough(element, index, array) {
return element >= 10;
}
请参阅http://underscorejs.org/#difference