我有以下数组:
var array = [10, 15, 20];
我还有一个名为N的变量:
var N = 20;
我做了一个循环并检查里面的所有内容,N必须大于所有数字所以我可以调用functionA,如果不是,我想调用其他函数
array.forEach(function (item) {
if (N > All) {
callFunctionA();
} else if (N > onlySomes) {
callFunctionB();
}
});
但问题是,如果数组的第一个数字小于数字,则会调用该函数,我想检查所有数字..这是可能的???
答案 0 :(得分:2)
如果某个数字大于boolean
,您可以使用false
并将其设置为N
。类似地,使用第二个布尔值来检查是否存在至少一个小于N
的数字。
var allAreSmaller = true;
var someAreSmaller = false;
array.forEach(function (item) {
if (N <= item) {
allAreSmaller = false;
}
if (N > item)
someAreSmaller = true;
});
if (allAreSmaller)
callFunctionA();
else if (someAreSmaller)
callFunctionB()
答案 1 :(得分:0)
您可以使用Array.every()和Array.some()
topLayoutGuide
答案 2 :(得分:0)
如果这就是你在循环中所做的一切,你可以使用filter
(https://issues.cloudera.org/browse/IMPALA):
var areAllSmaller = array.filter(function(_item){ return _item > N}).length <= 0; // true or false
Tentaaê!
答案 3 :(得分:0)
目前还不清楚,如果数组中的一个或多个数字大于N,您是否只希望调用该函数一次。
如果你希望它被称为每个时间,它会在数组中找到一个大于N的数字,你所拥有的就好了。
如果您只想确定是否应该调用该函数,并且 CALL IT ONCE ,请将函数调用替换为在定义N时设置为false的布尔变量,并在if语句中将其设置为true。如果多次迭代将其设置为真,那将无关紧要。
在循环之后,检查hte boolean是否为true,如果是,则调用函数。
示例:
var array = [10, 15, 20]; var fireCallback = false; var N = 20; array.forEach(function (item) { if (N > item) { fireCallback = true; //callFunction(); } }); if (fireCallback) { callFunction(); }
您可以尝试的另一种方法(如果您只想要触发一次)是使用Math.max找到数组中的最大数字:
var largest = Math.max.apply(Math, array); // 306
然后检查最大数字是否大于N
if(largest >= N) {
callFunction();
}