关于reverse()和sort()方法的返回值问题


关于reverse()和sort()方法的返回值问题

  先说结论:reverse()和sort()方法的返回值并不是当前步骤排序后的数组,而是数组的引用。
  展示如下:

var arr = [2, 5, 3, 6, 9, 7, 12, 15, 20, 35];

function compare(value1, value2) {
  if (value1 < value2) {
    return -1;
  } else if (value1 > value2) {
    return 1;
  } else {
     return 0;
  }
}

var item01 = arr.sort(compare);
// 打印item01步骤
console.log(item01);  // 打印出的结果为:[2, 3, 5, 6, 7, 9, 12, 15, 20, 35]

  下面我们再增加一个排序步骤:

var arr = [2, 5, 3, 6, 9, 7, 12, 15, 20, 35];

function compare(value1, value2) {
  if (value1 < value2) {
    return -1;
  } else if (value1 > value2) {
    return 1;
  } else {
     return 0;
  }
}

var item01 = arr.sort(compare);
var item02 = arr.reverse();
// 仍然打印item01步骤
console.log(item01);  // 打印结果为:[35, 20, 15, 12, 9, 7, 6, 5, 3, 2]

  证明sort()方法的返回值并不是经过当前步骤排序后的数组,而是数组的引用。虽然引用仍然指向这个数组,但是在console表达式语句前增加一个取反步骤后数组变了,打印的结果也跟着变了


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM