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

时间:2015-10-27 20:37:10

标签: javascript

我想检查函数是否为JavaScript中函数内的数组中的任何项返回true?我只是一棵树。

不幸的是没有骰子,也许我不够具体......如果有趣的话确定数组是完整的,我希望任何返回true,如果数组是空的则返回false。

preg_match_all()

4 个答案:

答案 0 :(得分:2)

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

arr.some(fun);

如果fun(x)对于arr中的任何元素等于true,它将返回true。

答案 1 :(得分:1)

您可以使用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);

答案 2 :(得分:1)

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

&#13;
&#13;
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 :)
}
&#13;
&#13;
&#13;

您也可以使用Array.every:

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

答案 3 :(得分:0)

我想出了这个: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上函数的结果