Как дать имя элементу массива?

Буду крайне благодарен любой помощи. Интегрирую в макет интернет-магазина сортировку дешевле/дороже. Изначально товары лежали в JSON, но для данной задачи были переведены в обычный JS массив. Однако если в JSON у каждого товара имелся артикул:

{
  "cedarnut":{ //артикул товара
      "name":"Кедровые орехи", //и его свойства
      "cost":59,
      "desc":"cedarnut description",
      "image":"images/cedarnut.webp"
  },
..//остальные товары
}

то теперь это просто порядковый номер элемента в массиве: введите сюда описание изображения Вопрос: как дать имя элементу массива? Это имеет значение в данном проекте так как я использую local storage, где имя добавленного элемента прежде задавалось именно JSON-именем каждого элемента

Ниже приведён сам код. JS массив товаров:

      var json = [
        {
            "name":"Кедровые орехи",
            "cost":59
        },
        {
            "name":"Фундук",
            "cost":184
        },
        {
            "name":"Пекан",
            "cost":123
        }
    ]

Код его сортировки по цене:

    json.sort(function(a, b){
        return a.cost - b.cost;
    });

И код вывода массива на страницу:

    let out = '';
        // Перебираю все орехи и отрисовываю контейнер каждого
        for (var key in json) {
            out+='<div class="single-goods">';
            out +='<h1>'+json[key]['name']+'</h1>';
            out+='<p>Цена: '+json[key]['cost']+'</p>';
            out+='<button class="add-to-cart" data-art="'+key+'">Купить</button>';
            out +='</div>';
        document.getElementById('goods').innerHTML = out; //вывожу орехи на страницу
        $('button.add-to-cart').on('click', addToCart); //подключаю к кнопке "Добавить в корзину" функцию
    }
}

Прочий код:

function addToCart() {
    //добавляем товар в корзину
    var articul = $(this).attr('data-art');
    if (cart[articul]!=undefined) {
        cart[articul]++;
    }
    else {
        cart[articul] = 1;
    }
    localStorage.setItem('cart', JSON.stringify(cart) );
    //console.log(cart);
    showMiniCart();
}

function checkCart(){
    //проверяю наличие корзины в localStorage;
    if ( localStorage.getItem('cart') != null) {
        cart = JSON.parse (localStorage.getItem('cart'));
    }
}

function showMiniCart(){
    //показываю содержимое корзины
    var out ='';
    for (var w in cart){
        out += w + ' --- '+cart[w]+'<br>';
    }
    out+='<br><a href="cart">Корзина</a>';
    $('#mini-cart').html(out);
}

/UPDATE/ Задача была решена посредством внесения следующих правок в код. JS массив:

    var json = [
        {   
            "articul":"cedar",
            "name":"Кедровые орехи",
            "cost":59
          },
          {
            "articul":"hazel",
            "name":"Фундук",
            "cost":184
          },
          {
            "articul":"pecan",
            "name":"Пекан",
            "cost":123
          }
        ];

Код вывода массива на страницу:

        json.sort((prev, next) => prev.cost - next.cost);
    let out = '';
        for (var articul in json) {
            out+='<div class="single-goods">';
            out +='<h1>'+json[articul]['name']+'</h1>';
            out+='<p>Цена: '+json[articul]['cost']+'</p>';
    /* правка> */        out+='<button class="add-to-cart" data-art="'+json[articul]['articul']+'">Купить</button>'; /* <правка */
            out +='</div>';
        document.getElementById('goods').innerHTML = out;
        $('button.add-to-cart').on('click', addToCart);
    }
    }
}

Ответы (1 шт):

Автор решения: Иван Поднебесный

Добавить артикул к объектам массива и потом использовать его, чтобы вернуться в исходную форму?

  var json = [
    {
        "article": "cedarnut",
        "name":"Кедровые орехи",
        "cost":59
    }
    ...
]
→ Ссылка