排序功能正在更改我未排序的变量

时间:2018-06-20 19:01:19

标签: javascript

伙计们,我在排序功能上遇到了问题,如您所见,我创建了一个名为newSiteArr的数组,并创建了一个名为ordered equals的变量,然后对排序后的变量进行排序,但随后又创建了一个新变量xyorderd =有序和反向排序,然后当我console.log newSiteArr [0]时,它给我的值为8而不是其原始值0,这似乎很奇怪,因为我没有对newSiteArr进行任何排序,也没有排序[ [0]变量按从低到高的顺序排序时返回8。

请有人能帮助我了解发生了什么,为什么会发生这种情况,这对我来说似乎是个错误,因为如果我什么都没做,为什么会更改newSiteArr?

const newSiteArr = [0, 4, 2, 5, 2, 5, 6, 7, 8, 1];

var orderd = newSiteArr;

console.log(newSiteArr[0]);


orderd.sort(function(a, b) {
  if (a > b) {
    return 1;
  } else {
    return -1;
  }
});


console.log(newSiteArr[0]);

var xyorderd = orderd.sort(function(a, b) {
  if (a < b) {
    return 1;
  } else {
    return -1;
  }
});
//  logs the value 8 when i am not sorting it
console.log(newSiteArr[0]);

console.log(xyorderd[0]);

//  logs the value 8 when i havent sorted it in reverse
console.log(orderd[0]);

1 个答案:

答案 0 :(得分:2)

.sort对数组进行排序-它不会返回新数组。同样,仅分配它不会复制该数组。