10

私は2つの配列を持っています:

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

配列 1 を配列 2 と正確に等しくしたいのですが、単純にできないと言われました。

array1 = array2;

これができない場合、array1 を array2 と等しくするにはどうすればよいですか?

ありがとう

4

3 に答える 3

22

配列の要素のコピーだけが必要な場合は、次のようにスライスを使用できます。

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

ここで割り当てを使用しない理由については、次の例をご覧ください。

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]
于 2013-07-28T10:35:00.657 に答える
2

配列のディープ コピーを取得するには、次のようにします ( 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;
}
于 2013-07-28T10:32:47.987 に答える
0

これはトリックを行います:

var clone = originalArray.slice(0);
于 2013-07-28T10:36:57.857 に答える