javascript 我的两个变量显示相同的sotred数组,但一个是assending另一个是decending,为什么显示相同?

guykilcj  于 2023-04-10  发布在  Java
关注(0)|答案(1)|浏览(150)
// const array1 = [1, 30, 4, 21, 100000, 99];
// const asscending=array1.sort((a,b)=>a-b); //for asending
// console.log(asscending);
// array1.sort((a,b)=>b-a); //for desecnding
// console.log(array1);
// console.log(asscending);
// output[ 1, 4, 21, 30, 99, 100000 ][ 100000, 99, 30, 21, 4, 1 ][ 100000, 99, 30, 21, 4, 1 ]

我的疑惑是为什么要改变变量,如何解决它
assecending变量将不通道

jbose2ul

jbose2ul1#

.sort将返回一个对原始对象的引用,而不是将其复制到一个新对象。因此两个变量都指向内存中的同一个数组。
您可以通过以下方式找到证据:
console.log(array1 === ascending);
为了避免在对数组进行排序之前创建数组的副本:
Const ascending = array1.slice().sort()或const ascending = [...array1].sort

相关问题