Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何读取数组中所有函数的布尔值(真/假)_Javascript_Jquery_Arrays_Function_Boolean - Fatal编程技术网

Javascript 如何读取数组中所有函数的布尔值(真/假)

Javascript 如何读取数组中所有函数的布尔值(真/假),javascript,jquery,arrays,function,boolean,Javascript,Jquery,Arrays,Function,Boolean,我很难读取我添加到数组中的许多函数的返回布尔值。我想读取它,如果数组中的任何函数读取false,它会将false返回给父函数 var array = [1, 2, 3, 4, 5]; var even = function(element) { // checks whether an element is even return element % 2 === 0; }; console.log(array.some(even)); // expected output: true

我很难读取我添加到数组中的许多函数的返回布尔值。我想读取它,如果数组中的任何函数读取false,它会将false返回给父函数

var array = [1, 2, 3, 4, 5];

var even = function(element) {
  // checks whether an element is even
  return element % 2 === 0;
};

console.log(array.some(even));
// expected output: true
下面是我正在运行的代码示例:

function validate(){
    var function1 = functionA();
    var function2 = functionB();
    var function3 = functionC();
    var function4 = functionD();
    var result = new Array;
    result.push(function1);
    result.push(function2);
    result.push(function3);
    result.push(function4);
    if (result.some(false)) {
        return false;
    } else {
        return true;
    }
}
我在调试时遇到了“false不是函数”的错误,是否有任何解决方法不会完全改变这种结构,如果不考虑你的想法,它仍然会有帮助。谢谢。

数组。some()参数应该是函数

var array = [1, 2, 3, 4, 5];

var even = function(element) {
  // checks whether an element is even
  return element % 2 === 0;
};

console.log(array.some(even));
// expected output: true
查看文档:
问题是因为
some()
需要的是函数,而不是布尔值。要解决此问题,请为该方法提供一个函数,该函数询问数组的每个元素并返回所需的值

还要注意,逻辑可以变得更加简洁:

函数验证(){
var result=[function(),functionB()];
return!result.some(v=>!v);
}
函数functionA(){
返回true;
}
函数B(){
返回false;
}

log(validate())您应该将函数传递给
some()

函数验证(){
var function1=function();
var function2=functionB();
var function3=functionC();
var function4=functionD();
var结果=新数组;
结果:推送(功能1);
结果:推送(功能2);
结果:推送(功能3);
结果:推送(功能4);
if(result.some(f=>!f)){
返回false;
}否则{
返回true;
}
}
log(validate());
函数functionA(){
返回true;
}
函数B(){
返回false;
}
函数c(){
返回true;
}
函数functionD(){
返回true;
}
需要回调来计算数组,而不是布尔值。 如果您为其提供如下功能:

function callback(el) {
  return el
}

并将其传递给false,您的示例将起作用。

您可以在数组中获取函数引用,并在回调中调用它们以进行检查

function validate() {
    var conditionChecks = [functionA, functionB, functionC, functionD];
    return !conditionChecks.some(fn => fn());
}
在错误状态下,有些需要一个函数来计算

function checkIfFalse(valToCheck){
    return valToCheck === false;
}
在您的some调用中使用此函数,如下所示:

if (result.some(checkIfFalse)) {
        return false;
    } else {
        return true;
    }

.some()
想要一个回调函数(而
false
不需要):提供链接值得一次投票,但代码只是从链接复制过来的,这有点悲哀。也许你可以设计你的代码来匹配这个问题?OP的错误很简单,没有必要解决他的具体问题。提供Snippet只是为了防止链接内容发生更改或被删除。感谢您的分享,这真的很有见地,但是按照您的方法,我必须为fn()创建另一个函数,因为它不是我代码中的函数,我避免了
fn()
是对函数/B/C的引用,因此不需要额外的代码。对于我的回答,这是一个很好的解释,区别仅仅在于调用函数的点。