私は2つの配列を持っています:
var array1 = [1, 2, 3];
var array2 = [4, 5, 6];
配列 1 を配列 2 と正確に等しくしたいのですが、単純にできないと言われました。
array1 = array2;
これができない場合、array1 を array2 と等しくするにはどうすればよいですか?
ありがとう
私は2つの配列を持っています:
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]
ここで割り当てを使用しない理由については、次の例をご覧ください。
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);