Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.03.2022, 14:20
Интересующийся
Отправить личное сообщение для karnager Посмотреть профиль Найти все сообщения от karnager
 
Регистрация: 14.06.2019
Сообщений: 16

Сумма значений одной переменной массива
Всем привет. Не являюсь разработчиком, решаю прикладные задачи как маркетолог. Поэтому рассмотрю решение моего вопроса за оплату. Можете написать в ЛС

У меня есть массив из N-го количества товаров:

ecommerce: {
    currency: "RUB",
    value: "1000.00",
    items: [
      {
        item_id: 10793,
        item_name: "Товар №1",
        item_brand: "",
        price: 500,
        item_category: "Книги",
        quantity: 1,
        id: "10793"
      },
      {
        item_id: 13372,
        item_name: "Товар №2",
        item_brand: "",
        price: 500,
        item_category: "Книги",
        quantity: 1,
        id: "13372"
      }
    ]
  }


У меня в этом коде есть для каждого товара переменная quantity, которая отображает кол-во товаров конкретного наименования. На выходе мне требуется получить общую сумму всех товаров. В данном случае 1+1 = 2

Если чуть подробнее, то решение необходимо на ECMASCRIPT 5 и ниже, последней версии не подойдет. У меня есть сайт (интернет-магазин), и там есть корзина с товарами. Вот мне нужно quantity вытаскивать для всех товаров и записывать в отдельную переменную. Если пользователь добавил 5 товаров в корзину, то quantity = 5, если 2, то 2. Соответственно, массив одинаковый, отличается только кол-вом товаров в нем, а все переменные одинаковые, и везде есть quantity.

Мне нужно прогнать по коду, найти кол-во quantity, их значения и просуммировать.

Если было бы:
Товар №1 - quantity 1
Товар №2 - quantity 2
То результат переменной должен быть 3

Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 08.03.2022, 14:55
Интересующийся
Отправить личное сообщение для karnager Посмотреть профиль Найти все сообщения от karnager
 
Регистрация: 14.06.2019
Сообщений: 16

Нашел решение сам!

function Quantity() {
    var items = ecommerce / ..... /;
    for(var i = 0, res = 0; i < items.length; i++) {
        res += items[i].quantity;
    }
    return res;
}
 
var result = Quantity();
Ответить с цитированием
  #3 (permalink)  
Старый 08.03.2022, 23:17
Интересующийся
Отправить личное сообщение для karnager Посмотреть профиль Найти все сообщения от karnager
 
Регистрация: 14.06.2019
Сообщений: 16

Нашел еще вот такое решение:

function(){  
var prods = {{ecommerce.items}};  
var i;
var sum = 0;   
if (!prods) { return; }
   for (i = 0; i < prods.length; i++) {    
    sum +=parseInt((prods[i].quantity))
}   
return sum; 
}


Только проблема заключается в том, что массив может иметь два формата. Либо items:

items: [
      {
        id: 10793,
        name: "Товар №1",
        sku: 10793,
        price: 24900,
        stocklevel: null,
        quantity: 1
      },
      {
        id: 13372,
        name: "Товар №2",
        sku: 13372,
        price: 700,
        stocklevel: null,
        quantity: 1
      }
    ]
  },


Либо products:

products: [
      {
        id: 10793,
        name: "Товар №1",
        sku: 10793,
        price: 24900,
        stocklevel: null,
        quantity: 1
      },
      {
        id: 13372,
        name: "Товар №2",
        sku: 13372,
        price: 700,
        stocklevel: null,
        quantity: 1
      }
    ]
  },


И вот как написать универсальный код для того, чтобы считало quantity и для products [] и для items [], нет идей, потому как в var prods подставляю или ecommerce.items или ecommerce.products
Ответить с цитированием
  #4 (permalink)  
Старый 09.03.2022, 07:41
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,743

var prods = ecommerce.items || ecommerce.products;

Что означают {{ }} в var prods = {{ecommerce.items}}; ?

Зачем parseInt в sum +=parseInt((prods[i].quantity)); и внутренние скобки?

Последний раз редактировалось voraa, 09.03.2022 в 07:52.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перебор эл. массива с целью присвоения значения переменной. uzlprog Events/DOM/Window 17 07.09.2021 13:32
Массив из значений чекбоксов,максимальное значение и сумма результата с др. значе-ями Евгенион Общие вопросы Javascript 5 23.10.2017 07:44
Имя массива из переменной Anderson Общие вопросы Javascript 7 24.02.2017 07:56
получение значений из массива и вставка нового элемента malefikus13 Общие вопросы Javascript 7 06.10.2015 11:56
Ввод диапазона значений массива с клавиатуры Воскобоенко Общие вопросы Javascript 11 06.06.2015 22:34