我很难读取我添加到数组中的多个函数的返回布尔值。我想阅读它,以便如果数组中的任何函数读为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”错误,是否有任何解决方法不能完全改变此结构,如果您不提出任何想法,仍然会有所帮助。谢谢。
答案 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;
}