簡體   English   中英

修改復制的數組而不修改原始數組js

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM