首页 > 解决方案 > 为什么我得到一些未定义的项目而不是排序数组?

问题描述

function bubble(arr) {
  var len = arr.length;

  for (var i = 0; i < len; i++) {
    for (var j = 0; j < len; j++) {

      if (arr[j] > arr[j + 1]) {
        var temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = arr[temp];
      }
    }
  }
  
  return arr;
}

console.log(bubble([5, 12, 2, 4, 10]));

我的输出是

[2, undefined, undefined, 4, 10]

我不知道为什么我得到undefined而不是排序数组。我也查看了其他一些代码,但没有成功。

标签: javascriptarrays

解决方案


您需要temp进行交换。见评论。

function bubble(arr) {
  var len = arr.length;

  for (var i = 0; i < len; i++) {
    for (var j = 0; j < len; j++) {

      if (arr[j] > arr[j + 1]) {
        var temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp; // take just temp
      }
    }
  }
  
  return arr;
}

console.log(bubble([5, 12, 2, 4, 10]));


推荐阅读