Как пройтись по объекту и взять нужное значение?

Я получаю массив со значениями выбранных пунктов в калькуляторе, как дальше найти эти ключи в объекте и вернуть их
значение?

Или как-то не так начала изначально?

<li class="calculator calculator--checked" data-value='свинина'>свинина</li>


const price = {

  'products': {
    'meat': {
      'свинина': 350,
      'говядина': 470,
      'курица': 100
    },

    'fruit': {
      'яблоки': 45,
      'бананы': 90
    }
  }

};


getPrice(t){
  let item = t.closest('.wrap').querySelectorAll('.calculator--checked');
  this.arr = [];

  for(let i = 0; i < item.length; i++){
    let value = item[i].getAttribute('data-value');
    this.arr.push(value);
  }
  this.setPrice(this.arr);
}
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
setPrice в getPrice - это странно :-)
Ты должна хранить категорию продукта в отдельном data-* атрибуте (или все продукты в одной категории). Тогда ты потом сможешь легко получить цену на товар
price[catName][productName]
UPD: Т.е. получится вот так

<li class="calculator calculator--checked" data-category="meat" data-value='свинина'>свинина</li>

getPrice(t){
  let item = t.closest('.wrap').querySelectorAll('.calculator--checked');
  this.arr = [];
  let totalPrice = 0;
  for(let i = 0; i < item.length; i++){
    let product = item[i].getAttribute('data-value');
    let category = item[i].getAttribute('data-category');
    totalPrice  += +price[category][product];
  }
  return totalPrice; // в totalPrice итоговая цена.
}


Вроде так. Еще замечание, data атрибуты следует брать с dataset
let product = item[i].dataset.value; // префикс data- упускаем.

Если название атрибута тип data-category-name (т.е. через дефис), то нужно писать в верблюжий нотации
item[i].dataset.categoryName
ну или просто по индексу
item[i].dataset['category-name']
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы