这似乎是一个简单的问题,但我无法找到很多相关信息。
var array1 = new Array(4, 3, 1, 2, 0, 5);
var array2 = array1;
array2.sort(function(a, b) {
return a - b;
})
预期行为:对array2进行排序,array1采用从4开始的原始顺序。
实际结果:两个数组都已排序。
如何对array1进行排序 - 同时保持array1并在array2中存储排序结果?我认为做array2 = array1
会复制变量,而不是引用变量。但是,在Firefox的控制台中,两个数组都显示为已排序。
答案 0 :(得分:1)
这是因为var array2 = array1;
你正在对对象进行新的引用,所以对array2的任何操作都会影响array1,因为它们基本上是同一个对象。
JS没有提供propner clone
函数/方法,所以试试这个广泛采用的workarround:
var array1 = new Array(4, 3, 1, 2, 0, 5);
var array2 = JSON.parse(JSON.stringify(array1));
array2.sort(function(a, b) {
return a - b;
});
希望有所帮助:)
答案 1 :(得分:0)
You can copy a array with slice method
var array1 = new Array(4, 3, 1, 2, 0, 5);
var array2 = array1.slice();