我很难读取我添加到数组中的许多函数的返回布尔值。我想读它,如果数组中的任何函数读取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;
}
}
我在调试时得到“假不是函数”错误,有没有任何解决方法不会完全改变这个结构,如果没有任何想法,你仍然会有所帮助。谢谢。
问题是因为some()
期待一个函数,而不是一个布尔值。要解决此问题,请为该方法提供一个函数,该函数询问数组的每个元素并返回所需的值。
另请注意,逻辑可以更加简洁:
function validate() {
var result = [functionA(), functionB()];
return !result.some(v => !v);
}
function functionA() {
return true;
}
function functionB() {
return false;
}
console.log(validate());
你应该将一个函数传递给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;
}
您可以在数组中获取函数引用,并在回调中调用它们以进行检查。
function validate() {
var conditionChecks = [functionA, functionB, functionC, functionD];
return !conditionChecks.some(fn => fn());
}
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
Array.some()
期待回调来评估您的数组,而不是布尔值。如果你提供这样的功能:
function callback(el) {
return el
}
并传递它而不是假,你的例子将起作用。
正如错误所述,有些需要一个函数来评估。
function checkIfFalse(valToCheck){
return valToCheck === false;
}
在你的一些调用中使用此函数,如下所示:
if (result.some(checkIfFalse)) {
return false;
} else {
return true;
}