如果我想克隆一個數組,我可以使用slice()函數,但是如果我想「克隆」一個元素呢?我想要做這樣的事情:Javascript:如何將數組中單個元素的值複製到另一個數組中的相同位置?
array1[i] = array2[i];
但我想複製的價值,而不是參考。 我該怎麼做?此外,該解決方案是否也適用於關聯數組?例如:
array1["one"] = array2["one"];
在此先感謝您。
如果我想克隆一個數組,我可以使用slice()函數,但是如果我想「克隆」一個元素呢?我想要做這樣的事情:Javascript:如何將數組中單個元素的值複製到另一個數組中的相同位置?
array1[i] = array2[i];
但我想複製的價值,而不是參考。 我該怎麼做?此外,該解決方案是否也適用於關聯數組?例如:
array1["one"] = array2["one"];
在此先感謝您。
你可以使用Object.assign和Array.splice
var cloneItem = Object.assign({}, array1[i]);
array2.splice(i, 0, cloneItem);
編輯
以前的位置增加了一個克隆項目,推動要素權的其餘部分。如果你只是想更換隻是做
array2[i] = Object.assign({}, array1[i]);
你可以這樣做:
array1[i] = Object.assign({}, array2[i]);
但如果有一個基元數組這是行不通的。 您也可以用切片的方法像你這樣寫道:
array1[i] = array2.slice(i, 1);
克隆數組正常(不留了嵌套結構中的任何引用)是沒有那麼簡單。你需要一個工具。不幸的是,它不是標準數組方法的一部分。你必須自己開發它。如
Array.prototype.clone = function(){
return this.map(e => Array.isArray(e) ? e.clone() : e);
};
一旦你有了這個工具在手,你可以先克隆數組,然後分配給你希望克隆陣列的任何項目;如array1[i] = array2.clone()[i];
javascript沒有關聯數組,它們是對象文字並且沒有順序。如果使用jQuery查看'$ .extend()' – charlietfl
「如果我想克隆一個數組,我可以使用slice()函數」不,你不能。 – Redu