我怎么能得到 falsy 元素?例如 -
function isBigEnough(element, index, array) {
return element >= 10;
}
[12, 5, 8, 130, 44].every(isBigEnough); // get the element "5" (falsy)
答案 0 :(得分:4)
您可以使用过滤器:
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]
答案 1 :(得分:1)
我同意您要使用过滤器的其他答案/评论。但是,我在另一方面以不同的方式解释您的问题。我如何解释您的问题是,一旦您过滤到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;
}