Функция зацикливается на объектных клавишах - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь перебрать объект Inventory, когда вызывается функция продажи, и он должен проверить запрошенный товар и его сумму.

Всегда обновлять инвентарь, когда сделана продажа, и еслиarticle внутри de object достигает 0, статья должна быть удалена из инвентаря.

До сих пор я пробовал это с forEach и простым For, но безуспешно.

Я всегда получаю 'Undefined' при вызове функции.

const inventory = {
    shoes: 10,
    socks: 6,
    shirts: 10,
    pants: 5,
}

function sale(arti, amount){
    Object.keys(inventory).forEach(key => {
        let keyitem = inventory[key]

        if(keyitem === arti){
            if(keyitem.val > amount){
                keyitem.val - amount
                return 'Article sold'
            } else if (keyitem.val === 0){
                keyitem.val - amount
                delete inventory.key
                return 'Article sold'
            } else if (keyitem.val < amount){
                return 'Theres no inventory for the amount you requested'
            }
        }
    });
}

sale('shoes', 7)

Функция должна вернуться, если можно сделать продажу, и обновить объект Inventory.

Так что еслиЯ называю продажу ('shoes', 7), а затем консоль записываю объект, обувь должна теперь читать 3.

1 Ответ

1 голос
/ 07 ноября 2019

Вы не можете вернуться из функции в обратном вызове forEach. Вы можете использовать фактический цикл foreach, чтобы достичь этого, хотя:

Здесь я удалил часть вашего кода, чтобы показать вам, как вернуться из цикла foreach. в вашем коде все еще есть несколько ошибок логики, но это не темы этой демонстрации.

const inventory = {
    shoes: 10,
    socks: 6,
    shirts: 10,
    pants: 5,
}

function sale(arti, amount){
    for(let key in inventory) {
      let keyitem = inventory[key]
        if(keyitem === 10){
          return "returns from inside the foreach loop";
        }
    }
   
}

console.log(sale('socks', 7));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...