【发布时间】:2021-12-28 07:58:05
【问题描述】:
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],
]);
这里我试图从参数化函数中复制一个数组。 cid 是我试图在函数内部传递的数组,我试图将它复制到 tempArr 中。稍后在修改 tempArr 的值时,cid 的值也在发生变化。
我还尝试使用 let tempArr=[...cid] 和 let tempArr=cid.slice(0) 复制值
【问题讨论】:
-
你做了一个浅拷贝,而不是深拷贝。
cid(顺便说一句很好命名:D)是一个二维数组。如果您从tempArr添加或删除元素,则cid不会发生更改,但是,数组的元素 仍然是引用,因为它们也是数组。一种快速而肮脏的方法是const tempArr = JSON.parse(JSON.stringify(cid)); -
@Cid 非常感谢您的解释和链接。我真的认为复制是一样的,因为我只是想复制一个数组的内容。
标签: javascript arrays