Вход

Просмотр полной версии : Изменяется исходный массив


_marisha
03.03.2022, 12:54
Доброго времени суток!
Есть функция checkCashRegister, где price - цена покупки, cash - оплата покупки, cid - наличность в кассе


function checkCashRegister(price, cash, cid) {
let exchange = [...cid]
for (let i = 0; i < exchange.length; i++) {
//здесь в exchange пушу полученные результаты
}
}

cid приходит в виде массива с массивами

[
["PENNY", 0.5],
["NICKEL", 0],
["DIME", 0],
["QUARTER", 0],
["ONE", 0],
["FIVE", 0],
["TEN", 0],
["TWENTY", 0],
["ONE HUNDRED", 0]
]


В самом начале копирую массив в let exchange

Далее в цикле работаю с массивом exchange и пушу в него значения.
В итоге нужно вернуть исходный cid, а он возвращается измененный.
Подскажите, каким образом скопировать cid и не менять его?

Варианты, какие были испробованы, но cid всё равно изменяется:
let exchange = [...cid]
let exchange = cid.slice()
let exchange = cid.concat()
let exchange = Array.from(cid)
let exchange = JSON.parse(JSON.stringify(cid))

рони
03.03.2022, 13:43
_marisha,
элементы вашего массива нужно дублировать!
let exchange = cid.map( a => a.slice(0));

ksa
03.03.2022, 14:55
нужно дублировать!
let exchange = cid.map( a => a.slice(0));

Или вовсе радикально. :)
let exchange = JSON.parse(JSON.stringify(cid))

_marisha
04.03.2022, 06:40
_marisha,
элементы вашего массива нужно дублировать!
let exchange = cid.map( a => a.slice(0)); - спасибо, то, что нужно :thanks: