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

问题描述 投票:2回答:6

我很难读取我添加到数组中的许多函数的返回布尔值。我想读它,如果数组中的任何函数读取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;
    }
}

我在调试时得到“假不是函数”错误,有没有任何解决方法不会完全改变这个结构,如果没有任何想法,你仍然会有所帮助。谢谢。

javascript jquery arrays function boolean
6个回答
0
投票

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

另请注意,逻辑可以更加简洁:

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

function functionA() {
  return true;
}

function functionB() {
  return false;
}

console.log(validate());

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
投票

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

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

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


0
投票
Array.some()

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

function callback(el) {
  return el
}

并传递它而不是假,你的例子将起作用。


0
投票

正如错误所述,有些需要一个函数来评估。

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

在你的一些调用中使用此函数,如下所示:

if (result.some(checkIfFalse)) {
        return false;
    } else {
        return true;
    }
© www.soinside.com 2019 - 2024. All rights reserved.