[英]Modify copied array without modifying the original array js
function checkCashRegister(price, cash, cid) {
let payBackAmount = cash - price;
let tempArr = cid.slice();
for (let i = 0; i < tempArr.length; i++) {
tempArr[i][1] = 0;
}
console.log("cid is", cid);
}
checkCashRegister(19.5, 20, [
["PENNY", 1.01],
["NICKEL", 2.05],
["DIME", 3.1],
["QUARTER", 4.25],
["ONE", 90],
["FIVE", 55],
["TEN", 20],
["TWENTY", 60],
["ONE HUNDRED", 100],
]);
在這里,我試圖從參數化的 function 中復制一個數組。 cid
是我試圖在 function 中傳遞的數組,我試圖將它復制到tempArr
中。 稍后在修改tempArr
的值時, cid
的值也會發生變化。 我也嘗試使用let tempArr=[...cid]
和let tempArr=cid.slice(0)
復制值
在上面的代碼中,當您將一個數組復制到另一個數組時,javascript 中的切片方法和擴展運算符執行淺拷貝,對於您的用例,您可能想要對 object 進行深度克隆,您可以let tempArr = JSON.parse(JSON.stringify(cid))
,您也可以使用deepClone
的 deepClone 來深度克隆 object
也請看這個線程深拷貝和淺拷貝有什么區別? 了解更多關於淺克隆和深克隆
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.