为什么排序复制数组会排序原始数组

时间:2020-05-11 21:45:03

标签: javascript arrays sorting

q = [3,2,4,1]
let copyQ = q;
copyQ.sort(); 
console.log(q) // 1,2,3,4 --------> This doesnt make sense.
console.log(copyQ) //1,2,3,4 -----> This makes sense

我曾预计q会保持不变,即未如第1行那样进行排序,因为我们已经对copyQ进行了排序,但事实并非如此。

那里发生了什么事?

1 个答案:

答案 0 :(得分:1)

sort()函数会更改初始数组。一旦通过链接复制了数组,就可以了。使用扩展运算符可避免初始数组发生突变。 Spread运算符将创建数组的副本,该副本与初始副本分开:

q = [3,2,4,1]
let copyQ = [...q]; 
copyQ.sort(); 
console.log(q)  
console.log(copyQ)