循环不会在javascript中断

时间:2017-03-28 02:14:37

标签: loops break

所以我试图创建一个函数,它将向我显示可被2整除的FIRST偶数。要分割的值在数组内,另一个函数帮助我确定数组中的值是否可被2整除问题是循环不会中断,循环会一直持续到数组的最后一个值。我希望它一旦找到第一个可被2整除的数字就会中断。所以在这种情况下,循环应该在数组中达到值8时停止但是它不会继续直到10.我希望你能帮助我

这是我的代码:

function findElement(arr, func) {
  var num = 0;
  arr.sort();
  for(var i = arr[0]; i <= arr[arr.length-1]; i++) {
    if(func(arr[i])) {
      num = arr[i];
       break;
    }

    if(!func(arr[i])) {
      num = undefined;
    }

  }
  return num;
}

findElement([1, 3, 5, 8, 9, 10], function(num){ return num % 2 === 0; });

2 个答案:

答案 0 :(得分:2)

我相信你的阵列已关闭。

而不是

for(var i = arr[0]; i <= arr[arr.length-1]; i++) {

应该是

for(var i = 0; i <= arr.length-1; i++) {

否则,您也可以验证未定义的数组索引。

答案 1 :(得分:1)

请删除arr.sort(),您的功能可以找到 请找到更新的代码。正常运行和检查。

function findElement(arr, func) {
  var num = 0;
 // arr.sort();
  for(var i = arr[0]; i <= arr[arr.length-1]; i++) {
    if(func(arr[i])) {
      num = arr[i];
       break;
    }

    if(!func(arr[i])) {
      num = undefined;
    }

  }
  return num;
}

console.log(findElement([1, 3, 5, 8, 9, 10], function(num){ return num % 2 === 0; }));