Задать вопрос
Morpheus_God
@Morpheus_God

Как правильно вывести содержимое json по ключу?

Доброй ночи. Подскажите пожалуйста, как мне правильно вывести содержимое JSON на основании ключа, который хранится в LocalStorage.
API возвращает мне такого вида JSON
let goods = [
    {
       "id":"1",
       "name":"Pizza",
       "cost":3
    },
    {
       "id":"2",
       "name":"Cola",
       "cost":5
    },
    {
       "id":"3",
       "name":"Tomatoes",
       "cost":6
    }]

В LocalStorage я сохранил id товара и его количество.
{1: 3, 2: 2, 3: 1}
Ключем является id а значение это количество товара.
Написал два метода, один добавляет в LocalStorage id и количество, второй считывает из LocalStorage.
function addToCart(id) {
    if (cart[id]!=undefined) {
        cart[id]++;
    }
    else {
        cart[id] = 1;
    }
    localStorage.setItem('cart', JSON.stringify(cart) );
}

function getCartFromLS() {
    return JSON.parse(localStorage.getItem('cart'));
}

Дальше пробую вытащить по полученому id из LocalStorage информацию по товару
let cart = getCartFromLS();

    for(let key in cart){
        console.log(goods[key].name);
    }

Получаю вывод на консоль.
Cola
Tomatoes
Uncaught TypeError: Cannot read property 'name' of undefined
Выводит только два объекта на третий ругается. И не совпадают по id.
Как правильно сформировать вывод? Что бы выводило по id из LocalStorage?
  • Вопрос задан
  • 392 просмотра
Подписаться 1 Простой Комментировать
Решение пользователя Rsa97 К ответам на вопрос (2)
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
В JS индексы массивов начинаются с нуля, вы пытаетесь обратиться к goods[3], которого не существует.
Ответ написан