Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.03.2022, 12:54
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Изменяется исходный массив
Доброго времени суток!
Есть функция 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))

Последний раз редактировалось _marisha, 03.03.2022 в 12:56.
Ответить с цитированием
  #2 (permalink)  
Старый 03.03.2022, 13:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

_marisha,
элементы вашего массива нужно дублировать!
let exchange = cid.map( a => a.slice(0));
Ответить с цитированием
  #3 (permalink)  
Старый 03.03.2022, 14:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от рони
нужно дублировать!
let exchange = cid.map( a => a.slice(0));
Или вовсе радикально.
let exchange = JSON.parse(JSON.stringify(cid))
Ответить с цитированием
  #4 (permalink)  
Старый 04.03.2022, 06:40
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Сообщение от рони Посмотреть сообщение
_marisha,
элементы вашего массива нужно дублировать!
let exchange = cid.map( a => a.slice(0));
- спасибо, то, что нужно
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пустой массив при сохранении в localStorage kichkun Общие вопросы Javascript 1 19.11.2016 13:58
Чтение данных из файла в массив TheSingleElk Общие вопросы Javascript 2 16.06.2016 01:09
Изменяется родительский массив voodoo_dn Общие вопросы Javascript 18 22.12.2014 21:25
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Как записать в массив новый объек а не ссылку на исходный объект Casufi Общие вопросы Javascript 12 08.02.2010 02:40