我有兩個數組:製作一個陣列等於另一個
var array1 = [1, 2, 3];
var array2 = [4, 5, 6];
我想陣列1正好等於陣列2。有人告訴我,我不能簡單地做:
array1 = array2;
如果我不能這樣做,我怎麼能讓array1等於array2?
感謝
我有兩個數組:製作一個陣列等於另一個
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]
至於爲什麼你不應該在這裏使用assignement看看下面這個例子:
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;
}
'陣列1 = array2.slice(0)'? – DCoder
@DCoder如果這是我的問題的答案,爲什麼不提交它作爲答案? :P – jskidd3
爲什麼你不能'array1 = array2;'? –