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], ]); Aquí estoy tratando de copiar una matriz de la función parametrizada. cid es la matriz que estoy tratando de pasar dentro de la función y estoy tratando de copiarla en tempArr . Más tarde, al modificar los valores de tempArr , los valores de cid también cambian. También intenté copiar los valores usando let tempArr=[...cid] y let tempArr=cid.slice(0)
Aquí, en el código anterior, cuando está copiando una matriz a otra matriz, el método de corte y el operador de distribución de javascript hacen una copia superficial, para su caso de uso, es posible que desee hacer una clonación profunda del objeto que puede hacer let tempArr = JSON.parse(JSON.stringify(cid)) , en lugar de esto, también puede usar deepClone de Lodash para clonar en profundidad un objeto
también mire este hilo ¿Cuál es la diferencia entre una copia profunda y una copia superficial? para saber más sobre el clon superficial y el clon profundo