如何使用forEach做出决定

时间:2015-05-25 03:14:02

标签: javascript jquery arrays

我有以下数组:

var array = [10, 15, 20];

我还有一个名为N的变量:

var N = 20;

我做了一个循环并检查里面的所有内容,N必须大于所有数字所以我可以调用functionA,如果不是,我想调用其他函数

array.forEach(function (item) {
  if (N > All) {
    callFunctionA();
  } else if (N > onlySomes) {
    callFunctionB();
  }

});

但问题是,如果数组的第一个数字小于数字,则会调用该函数,我想检查所有数字..这是可能的???

4 个答案:

答案 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)

如果这就是你在循环中所做的一切,你可以使用filterhttps://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();
}