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

时间:2019-03-18 11:54:58

标签: javascript jquery arrays function boolean

我很难读取我添加到数组中的多个函数的返回布尔值。我想阅读它,以便如果数组中的任何函数读为false,它将向父函数返回false。

这是我正在运行的代码的示例:

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 is not a function”错误,是否有任何解决方法不能完全改变此结构,如果您不提出任何想法,仍然会有所帮助。谢谢。

6 个答案:

答案 0 :(得分:1)

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

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(f => !f)) {
        return false;
    } else {
        return true;
    }
}
console.log(validate());
function functionA(){
  return true;
}
function functionB(){
  return false;
}
function functionC(){
  return true;
}
function functionD(){
  return true;
}

答案 1 :(得分:1)

您可以将函数引用放在数组中,然后在回调中调用它们以进行检查。

function validate() {
    var conditionChecks = [functionA, functionB, functionC, functionD];
    return !conditionChecks.some(fn => fn());
}

答案 2 :(得分:0)

Array.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

查看文档: https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Array/some

答案 3 :(得分:0)

问题是因为some()需要一个函数,而不是布尔值。要解决此问题,请为该方法提供一个函数,该函数可以查询数组的每个元素并返回所需的值。

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

function validate() {
  var result = [functionA(), functionB()];
  return !result.some(v => !v);
}

function functionA() {
  return true;
}

function functionB() {
  return false;
}

console.log(validate());

答案 4 :(得分:0)

Array.some()

期望一个回调来评估您的数组,而不是布尔值。 如果您提供了这样的功能:

function callback(el) {
  return el
}

并通过它而不是false,您的示例将起作用。

答案 5 :(得分:0)

由于错误状态, some 需要一个函数来求值。

function checkIfFalse(valToCheck){
    return valToCheck === false;
}

在这样的通话中使用此功能:

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