JS对传递值的数组sort(),原数组也被排序了,原理是什么?怎么复制数组sort()后不影响原数组?

详看代码:
varnumbers=[4,2,5,1,3],
n1=numbers,
n2=numbers;
n1.sort(function(a,b){
returna-b;
});
console.log(numbers,n1,n2);//结果都是[1,2,3,4,5]
谁能否给解释一下原理,另外怎样能够复制数组sort()之后不影响原数组?
波斯汪
浏览 353回答 2
2回答

心有法竹

进行对象赋值的时候,赋值的是对象的引用。可以copy一个对象实现。varnumbers=[4,2,5,1,3],n1=numbers.slice(0),n2=numbers;n1.sort(function(a,b){returna-b;});console.log(numbers,n1,n2);这里n2和numbers还是一个对象,但n1是另一个对象,只是对象的内容一样而已。varnumbers=[4,2,5,1,3],n1=numbers.slice(0),n2=numbers;n2==numbers//truen1==numbers//false
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript