【发布时间】:2017-08-04 15:13:12
【问题描述】:
我有这段代码,即使我将原始数组 arr 复制到我命名为 copy 的变量中,它也会更改它。 data(arr) 由 codewars 提供
cutIt(["codewars","javascript","java"])
function cutIt(arr){
//coding here...
//step 1 go through array and find the shortest
// sort string by length
// make copy of arr not to affect it
let copy = arr;
console.log(copy);
//[ 'codewars', 'javascript', 'java' ]
let sorted = copy.sort(function (a,b) {
return a.length - b.length;
})
console.log(arr);
//[ 'java', 'codewars', 'javascript' ]
}
我没有在代码中明确更改数组 arr 但输出显示它已更改?我认为通过复制它并对副本进行排序不会影响 arr?
【问题讨论】:
-
sort() 方法对数组的元素进行就地排序并返回该数组。您没有制作数组的副本,而只是制作了引用的副本。 Documentation
-
两个变量都引用同一个数组,因此为什么要更改原始数组,尝试创建一个包含与原始元素相同的新数组。
-
谢谢,我想我已经有了更好的理解,有点像指向同一个变量的第二个指针......
标签: javascript arrays