Javascript. Обнуление переменных в цикле

77
10 декабря 2021, 20:40

Есть код, который проходится по заказам и получает суммы за определенный период. Сейчас 3 периода. Почему-то все цены одинаковые на всех трех периодах.

Думаю, что где-то надо обнулять переменные, потому что они суммируются из прошлых периодов.

Подскажите, пожалуйста, где я ошибся в коде. Спасибо.

var periods = { 
            "last7": [dateFormat(new Date().setDate(new Date().getDate() - 7), "yyyy-mm-dd HH:MM:ss"), dateFormat(new Date(), "yyyy-mm-dd HH:MM:ss")], 
            "lastMonth": [dateFormat(new Date().setMonth(new Date().getMonth() - 1, 1), "yyyy-mm-dd 00:00:00"), dateFormat(new Date().setMonth(new Date().getMonth(), getLastDayOfMonth(new Date().getFullYear(), new Date().getMonth() - 1)), "yyyy-mm-dd 23:59:59")], 
            "last30": [dateFormat(new Date().setDate(new Date().getDate() - 30), "yyyy-mm-dd HH:MM:ss"), dateFormat(new Date(), "yyyy-mm-dd HH:MM:ss")], 
        }; 
 
        var ordersData = {}, purchase = {}; 
 
        for (var period in periods) { 
 
            var orders = await this.apiOrders({ 
                "dateCreatedStart": periods[period][0], 
                "dateCreatedEnd": periods[period][1], 
                "statusCode": "40226" 
            }); 
            for (var order of orders) { 
                var numPositions = 0; 
                var sumPositions = 0.00; 
                var numOrders = 1; 
 
                for (var position of order.positions) { 
                    if (position.statusCode == "40226") { 
                        numPositions++; 
                        sumPositions += (position.priceOut * position.quantityFinal); 
                    } 
                } 
 
                if (typeof purchase[order.userId] != "undefined") { 
                    numOrders += purchase[order.userId].numOrders; 
                    numPositions += purchase[order.userId].numPositions; 
                    sumPositions += purchase[order.userId].sumPositions; 
 
                } 
 
 
                purchase[order.userId] = { 
                    "numOrders": numOrders, 
                    "numPositions": numPositions, 
                    "sumPositions": Number((sumPositions).toFixed(2)) 
                }; 
                sumPositions = 0.00; 
                numPositions = 0; 
                numOrders = 1; 
            } 
 
            ordersData[period] = purchase; 
 
        } 
 
        console.log(ordersData); 

Answer 1

Вот это подозрительная строчка:

ordersData[period] = purchase;

Вы всем ordersData[period] назначаете одно и то же.

    var ordersData = {}/*, purchase = {}*/;
    for (var period in periods) {
        var purchase = {};
        ...
READ ALSO
Пустое значение в заявке

Пустое значение в заявке

Кто может подсказать в чем причина? Когда нажимаю кнопку отправить, полученное значение становится NaN

82
Правильно ли в приложении используются глобальные переменные?

Правильно ли в приложении используются глобальные переменные?

Имеется приложение, в котором активно используются глобальные переменныеЕсть опасения, что это будет сильно нагружать систему

92
Что значит строчка кода?

Что значит строчка кода?

Есть код, который при вводе в input прерывает вызов функции callSearch, если после последнего ввода символа не прошло 2х секунд, помогите разобраться...

189