我有這個代碼,它改變了原來的數組ARR,即使當我將它複製到我命名副本的變量。 數據(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?
排序()方法進行排序的陣列的代替元素並返回數組。您沒有製作數組的副本,只是參考的副本。 [文檔](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) – Matthew
這兩個變量引用相同的數組,因此爲什麼原始更改嘗試創建一個新的包含與原始相同的元素的數組。 – Lixus
謝謝我認爲我有一個更好的理解有點像第二個指針,以相同的變量... –