使用JavaScript减少时,如何跳过迭代?

时间:2016-08-27 06:27:26

标签: javascript

我正在尝试找出一种在使用JavaScript reduce函数时有条件地摆脱迭代的方法。

鉴于以下代码对一个整数数组求和,并将返回数字10

[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, currentIndex, array) {
  return previousValue + currentValue;
});

我该怎么做:

[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, currentIndex, array) {
  if(currentValue === "WHATEVER") {
    // SKIP or NEXT -- don't include it in the sum
  }
  return previousValue + currentValue;
});

3 个答案:

答案 0 :(得分:28)

您可以返回previousValue

[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, currentIndex, array) {
  if(currentValue === "WHATEVER") {
    return previousValue;
  }
  return previousValue + currentValue;
});

答案 1 :(得分:2)

如果条件为true,则可以简单地使用三元运算符传递前一个值;如果false则可以执行特定操作

[0, 1, 2, 3, 4].reduce((previousValue, currentValue, currentIndex, array)=>  {
  return(condition)?  previousValue : previousValue + currentValue;
});

答案 2 :(得分:0)

另一种方法是放置一条if语句,在那儿执行归约逻辑,而忽略其他条件。 例如:

代替这样做:

new TableTimetableAdapter(Repo.getValue());

这很完美:

let a = sorted.reduce((item,total)=>{
    if(total+item > k) return total;
ans++;
return total + item;
})