如何读取数组中所有函数的布尔值(真/假)
Posted
技术标签:
【中文标题】如何读取数组中所有函数的布尔值(真/假)【英文标题】:How to read boolean (true/false) of all functions in an array 【发布时间】:2019-08-08 18:53:26 【问题描述】:我很难读取添加到数组中的多个函数的返回布尔值。我想读取它,这样如果数组中的任何函数读取为 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”错误,是否有任何解决方法不会完全改变这个结构,如果没有提出任何想法,它仍然会有所帮助。谢谢。
【问题讨论】:
.some()
想要一个回调函数(false
不是):developer.mozilla.org/en-US/docs/Web/javascript/Reference/…
【参考方案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;
【讨论】:
【参考方案2】:您可以将函数引用放在一个数组中,并在回调中调用它们进行检查。
function validate()
var conditionChecks = [functionA, functionB, functionC, functionD];
return !conditionChecks.some(fn => fn());
【讨论】:
感谢您的分享非常有见地,但是按照您的方法,我必须为 fn() 创建另一个函数,因为它不是我的代码中的函数,我避免这样做fn()
是对函数 A/B/C 的引用,因此不需要额外的代码。这与我的回答类似,区别仅在于您调用函数的点。【参考方案3】:
问题是因为some()
需要一个函数,而不是布尔值。要解决此问题,请为该方法提供一个函数,该函数会询问数组的每个元素并返回您所需的值。
还要注意,逻辑可以更简洁:
function validate()
var result = [functionA(), functionB()];
return !result.some(v => !v);
function functionA()
return true;
function functionB()
return false;
console.log(validate());
【讨论】:
【参考方案4】: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
【讨论】:
提供链接值得一票,但代码只是从链接中复制的,这有点可悲。也许你可以设计你的代码来匹配这个问题? OP的错误很简单,没有必要解决他的具体问题。提供片段只是为了防止链接内容更改或被删除。【参考方案5】:Array.some()
期望回调来评估您的数组,而不是布尔值。 如果你给它提供这样的功能:
function callback(el)
return el
并传递它而不是 false,您的示例将起作用。
【讨论】:
【参考方案6】:由于错误状态,一些需要一个函数来评估。
function checkIfFalse(valToCheck)
return valToCheck === false;
在你的一些调用中使用这个函数,如下所示:
if (result.some(checkIfFalse))
return false;
else
return true;
【讨论】:
以上是关于如何读取数组中所有函数的布尔值(真/假)的主要内容,如果未能解决你的问题,请参考以下文章