使一个数组与另一个数组完全相等

Making one array exactly equal to another

本文关键字:数组 另一个 一个      更新时间:2023-09-26

我有两个数组:

var array1 = [1, 2, 3];
var array2 = [4, 5, 6];

我希望数组1与数组2完全相等。有人告诉我,我不能简单地做:

array1 = array2;

如果我不能做到这一点,我如何使array1等于array2?

感谢

如果你只需要一个数组元素的副本,你可以简单地使用这样的切片:

a = [1,2,3]
copyArray = a.slice(0)
[1 , 2 , 3]

至于为什么你不应该在这里使用assignment,看看这个例子:

a = [1,2,3]
b = a 
a.push(99)
a 
[1,2,3,99]
b
[1,2,3,99]

如果你复制一个数组,你就没有这个问题:

 a = [1,2,3]
 b = a.slice(0)
 a.push(888)
 a 
 [1,2,3,888]
 b 
 [1,2,3]

对于数组的深度副本,请执行以下操作(REFERENCE):

function deepCopy(obj) {
    if (Object.prototype.toString.call(obj) === '[object Array]') {
        var out = [], i = 0, len = obj.length;
        for ( ; i < len; i++ ) {
            out[i] = arguments.callee(obj[i]);
        }
        return out;
    }
    if (typeof obj === 'object') {
        var out = {}, i;
        for ( i in obj ) {
            out[i] = arguments.callee(obj[i]);
        }
        return out;
    }
    return obj;
}

这将完成任务:

var clone = originalArray.slice(0);