检查函数是否对数组中的任何项返回true

Check if a function returns true for any item in an array

本文关键字:任何项 返回 true 数组 函数 是否 检查      更新时间:2023-09-26

我想检查一个函数是否对JavaScript函数中数组中的任何项返回true?顺便说一句,我只是一个幼小的

不幸的是,没有骰子,也许我不够具体。。。如果fun标识数组为满,则我希望any返回true;如果数组为空,则希望any返回false。

    function any(arr, fun){ 
    for (var i=0; i<arr.length; i++) {  
    if (loop(fun)=== 'false')      //<--- this is what I'm not sure about
    return false;
    if (arr.length>0);
    return true;
    } 
}

您有一个JS数组函数,它被称为some。你应该这样使用它:

arr.some(fun);

如果数组中的任何元素的fun(x)等于true,则返回true。

您可以使用Array.prototype.filter()来减少基于返回true或false的函数的元素。

var func = function(item) {
    return item === 'hello';
}
document.write(!!['hello','world','foo','bar'].filter(func).length + '<br>');
document.write(!!['world','foo','bar'].filter(func).length);

您需要调用函数并检查它的结果(不确定循环应该做什么,但它似乎对任何事情都没有帮助):

function any(arr, fun) {
  for (var i = 0; i < arr.length; i++) {
    if (fun(arr[i]) === false) { //assuming the function returns a boolean
      return false;
    }
  }
  return true; // if we get trough the entire array they must've all been true :)
}

您也可以使用Array.every:

arr.every(function(item) {
  return fun(item); 
});

我想到了这个:http://jsfiddle.net/rbroden/k5qq4ngy/

var arr = [
    false,
    false,
    false,
    true,
    false];
function fun(arrElement){
    return arrElement;
}
function any(array){
    var bool = false;
    for(i = 0; i < array.length; i++){
        if(fun(array[i])) bool = true;
    }
    return bool;
}
alert(any(arr));

基本上是

  • 有一个布尔值的占位符,用于跟踪条件是否满足

  • 遍历传递给函数的数组

  • 如果函数返回true,占位符bool将更改为true
  • 在函数的末尾,在bool上返回函数的结果