JavaScript for 循环在中间停止运行

标签 javascript loops sorting for-loop reduce

我正在尝试按降序返回一个数字数组(最大的在前面)。

我的功能似乎可以工作,但只是在中间退出。

let array = [1, 9, 8, 7, 2, 6, 3, 5];
let sorted = [];

function sortNumbers(array) {
  for (var i = 0; i < array.length; i++) {
    let max = array.reduce(function(a, b) {
      console.log(`a: ${a} b: ${b}`);
      return Math.max(a, b);
    });
    let maxIdx = array.indexOf(max);
    let biggest = array.splice(maxIdx, 1);
    sorted.push(biggest);
  }
  console.log('sorted array is: ', sorted.join(''));
  //returns 9876
}

sortNumbers(array);

最佳答案

您遇到的问题是由循环内的拼接引起的。您在遍历数组时更改数组。快速修复是向后循环遍历数组,以便在循环开始时设置正确的长度:

for (var i = array.length; i > 0; i--) {
  // etc
}

let array = [1, 9, 8, 7, 2, 6, 3, 5];

let sorted = [];

function sortNumbers(array) {
  for (var i = array.length; i > 0; i--) {

    let max = array.reduce(function(a, b) {

      console.log(`a: ${a} b: ${b}`);
      return Math.max(a, b);

    });

    let maxIdx = array.indexOf(max);
    let biggest = array.splice(maxIdx, 1);
    sorted.push(biggest);
  }

  console.log('sorted array is: ', sorted.join('')); //returns 9876

}

sortNumbers(array);

关于JavaScript for 循环在中间停止运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51690370/

相关文章:

javascript - JSON.parse 无法识别要解析的字符串中的\"(反斜杠和引号)

excel - 我正在尝试更改多个工作簿的事件过程?

perl 排序数组 : leave an item starts with # in-place

javascript - 防止Ant模态阻止后台访问

javascript - 如何在主干或 ember 或任何 javascript MVC 框架中编写简单 jQuery AJAX 调用的等效项,以便我可以对其进行单元测试

loops - 循环和堆栈的递归函数

bash - ffmpeg 失败并出现红色十六进制输出墙,但仅在 bash 循环中

algorithm - 选择算法运行时

algorithm - 寻找某些数组最快的排序算法

javascript - Titanium JavaScript - 将彩色对象放置在现有标签上