为什么我得到一些未定义的项目而不是排序的数组?

时间:2019-06-05 19:08:29

标签: javascript arrays

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而不是排序数组。我也查看了其他一些代码,但没有解决。

1 个答案:

答案 0 :(得分:6)

您需要以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]));