【问题标题】:Loop won't break in javascript循环不会在javascript中中断
【发布时间】:2017-03-28 02:14:36
【问题描述】:

所以我正在尝试创建一个函数,它将向我显示可被 2 整除的第一个偶数。要被除的值在数组内,另一个函数帮助我确定数组中的值是否可被 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; });

【问题讨论】:

  • 它肯定会在碰到第一个元素时停止。提示:检查arr 排序后的样子。

标签: loops break


【解决方案1】:

我相信您的 for over 数组已关闭。

代替

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

应该是

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

否则,您还不如验证未定义的数组索引。

【讨论】:

    【解决方案2】:

    请删除 arr.sort() 你的函数工作 find 请找到更新后的代码。它运行良好并检查。

    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; }));

    【讨论】:

    • 就是这样。我附加了另一个函数来对数字进行排序,以防数组接收到不按顺序排列的数字。
    猜你喜欢
    • 2015-06-20
    • 1970-01-01
    • 2021-01-30
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多