为什么我的排序函数对我没有要求的不同数组进行排序?

Why is my sort function sorting a different array I did not ask for?

我想复制一个数组并对其进行排序。但是,当我复制数组并对它进行排序时,它似乎对两个数组都进行了排序。有谁知道这是为什么?

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 库可能会有所不同。我不知道这是否重要。我还应该注意,我不知道排序算法是如何工作的,我只是查找了如何在 google.

上对数字进行排序

因为JS中的数组是引用值,所以当你试图用=复制它时,它只会复制对原始数组的引用,而不是数组的值。要创建数组的真实副本,您需要将数组的值复制到一个新的值变量下。这就是为什么您的父数组 (arr1) 被修改而不是子数组 (arr2) 的原因。但是,如果您不希望发生这种情况,请替换以下内容,

arr2 = arr1.slice();