Нажмите, чтобы массив внутри для в Javascript - PullRequest
0 голосов
/ 02 июля 2018

У меня есть объект this.items, на котором я запускаю for in, затем использую метод find, чтобы получить все продукты по id. Я пытаюсь установить сумму salesTax на основе условия (если taxPercent> 0), но цикл проходит больше ожидаемого количества раз, и, таким образом, taxPercent больше требуемого.

total() {
    let total = 0
    let tax = []
    let importDuty = .05

    for (let productId in this.items) {
        total += this.inventory.products.find(product => {
            if (product.taxPercent > 0) {
                tax.push(product.price * product.taxPercent)
            }
            return product.id == productId
        }).price * this.items[productId]
    }

    tax = tax.reduce((a, b) => a + b, 0)

    let importDutyToApply = total * importDuty
    total = total + importDutyToApply + tax

    let response = {
        'total': total,
        'tax': tax
    }

    return response
}

Мне интересно, как я могу установить общий налог, чтобы подать заявку на любые товары, для которых taxPercent не установлен на 0. Итак, если у меня было три предмета, и один из них требовал 10-процентный налог на 100 долларов, общая сумма должно быть 10 долларов. Точно так же, если бы у меня было много предметов, некоторые из которых требовали бы 10-процентного налога, а другие нет, это бы сложило только те, которые в нем нуждаются. Какие-нибудь мысли?

1 Ответ

0 голосов
/ 02 июля 2018

Функция, которую вы передаете find, вызывается множеством раз. Вы просто хотите добавить налог за найденный продукт, а не за все, что он увидел в пути.

const product = this.inventory.products.find( product => product.id == productId );
if (product.taxPercent > 0) {
    tax.push(product.price * product.taxPercent)
}
total += product.price * this.items[productId]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...