嘿伙计们,我在排序函数上遇到了问题,正如您所看到的,我创建了一个名为 newSiteArr 的数组,并且创建了一个名为 orderd 的变量等于它,然后对有序变量进行排序,但随后我创建了一个新变量 xyorderd = to orderd 并反向排序,然后当我 console.log newSiteArr[0] 时,它给我的值是 8 而不是其原始值 0,这看起来很奇怪,因为我没有对 newSiteArr 和 orderd[ 进行任何排序当我按从低到高的顺序对它进行排序时,[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]);
最佳答案
.sort
对数组进行就地排序 - 它不会返回新数组。而且,仅分配它并不会复制数组。
关于javascript - 排序函数正在更改我未排序的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50955306/