我想復制一個陣列并對其進行排序。但是,當我復制陣列并對其進行排序時,似乎對兩個陣列都進行了排序。有人知道為什么嗎?
var arr1 = [-1, 2, 0, -2];
var arr2 = [];
arr2 = arr1;
arr2.sort(function(a, b){return a - b});
console.log(arr1);
console.log(arr2);
/*
Expected result:
arr1 = [-1, 2, 0, -2]
arr2 = [-2, -1, 0, 2]
Actual result:
arr1 = [-2, -1, 0, 2]
arr2 = [-2, -1, 0, 2]
*/
我不知道為什么會這樣,所以我使用 p5.js 庫可能會有所不同。我不知道這是否重要。我還應該注意,我不知道排序演算法是如何作業的,我只是在谷歌上查找了如何對數字進行排序。
uj5u.com熱心網友回復:
因為 JS 中的陣列是參考值,所以當你嘗試使用 = 復制它時,它只會復制對原始陣列的參考,而不是陣列的值。要創建陣列的真實副本,您需要將陣列的值復制到新值變數下。這就是為什么你的父陣列(arr1)被修改而不是子陣列(arr2)。但是,如果您不希望發生這種情況,請替換以下內容,
arr2 = arr1.slice();
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/427537.html
