2016-09-14 54 views
1

如果我想克隆一個數組,我可以使用slice()函數,但是如果我想「克隆」一個元素呢?我想要做這樣的事情:Javascript:如何將數組中單個元素的值複製到另一個數組中的相同位置?

array1[i] = array2[i]; 

但我想複製的價值,而不是參考。 我該怎麼做?此外,該解決方案是否也適用於關聯數組?例如:

array1["one"] = array2["one"]; 

在此先感謝您。

+0

javascript沒有關聯數組,它們是對象文字並且沒有順序。如果使用jQuery查看'$ .extend()' – charlietfl

+0

「如果我想克隆一個數組,我可以使用slice()函數」不,你不能。 – Redu

回答

0

你可以使用Object.assignArray.splice

var cloneItem = Object.assign({}, array1[i]); 
    array2.splice(i, 0, cloneItem); 

編輯
以前的位置增加了一個克隆項目,推動要素權的其餘部分。如果你只是想更換隻是做

array2[i] = Object.assign({}, array1[i]); 
0

你可以這樣做:

array1[i] = Object.assign({}, array2[i]); 

但如果有一個基元數組這是行不通的。 您也可以用切片的方法像你這樣寫道:

array1[i] = array2.slice(i, 1); 
0

克隆數組正常(不留了嵌套結構中的任何引用)是沒有那麼簡單。你需要一個工具。不幸的是,它不是標準數組方法的一部分。你必須自己開發它。如

Array.prototype.clone = function(){ 
    return this.map(e => Array.isArray(e) ? e.clone() : e); 
}; 

一旦你有了這個工具在手,你可以先克隆數組,然後分配給你希望克隆陣列的任何項目;如array1[i] = array2.clone()[i];