Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   поиск id по значению параметра в json (https://javascript.ru/forum/events/83817-poisk-id-po-znacheniyu-parametra-v-json.html)

Dmitry1988 24.03.2022 15:14

поиск id по значению параметра в json
 
Всем привет. В данном коде реализовано сканирование штрих кода товара и добавление его в корзину. Здесь прописано условие для первого товара. Писать так для каждого не практично, так как список товаров будет меняться. Помогите разобраться как получив значение barcode со сканера найти в goods.json такое же значение link и получить его id.

goods.json
{
  "a" : {
    "name" : "coca-cola",
    "cost" : "10",
    "description" : "описание товара 1",
    "image" : "img/Coca-Cola.jpg",
    "type" : "drink",
    "link" : "46147110",
     "pos" : "1"
  },
  "b" : {
    "name" : "кофе",
    "cost" : "10",
    "description" : "описание товара 2",
    "image" : "img/cofe.jpg",
    "link" : "goods/tb-2.html",
    "type" : "drink",
     "pos" : "46147111"
  },
  "c" : {
    "name" : "чипсы",
    "cost" : "30",
    "description" : "описание товара 3",
    "image" : "img/chips.jpeg",
    "link" : "46147112",
    "type" : "snack",
     "pos" : "3"
  },
     "d" : {
    "name" : "сендвич",
    "cost" : "40",
    "description" : "описание товара 4",
    "image" : "img/sandvich.png",
    "link" : "46147113",
    "type" : "pie",
     "pos" : "4"
  },  
  "e" : {
    "name" : "coca-cola",
    "cost" : "10",
    "description" : "описание товара 1",
    "image" : "img/Coca-Cola.jpg",
    "type" : "drink",
    "link" : "46147114",
     "pos" : "5"
  }
[/json]

[js]
$(document).ready(function() 
{
    var barcode="";
    $(document).keydown(function(e) 
    {
        var code = (e.keyCode ? e.keyCode : e.which);
        if(code==13)// Enter key hit
        {
            console.log(barcode);
                if (barcode == "46147110" ) {
                id = "a";
    if (cart[id]==undefined) {
        cart[id] = 1; 
    }
    else {
        cart[id]++; 
    }
    showCart();
    saveCart();
    barcode = ""
            }
        }
        else if(code==9)// Tab key hit
        {
             console.log(barcode);
               barcode = ""
        }
        else
        {
            barcode=barcode+String.fromCharCode(code);
        }
    });
});

рони 24.03.2022 15:30

Dmitry1988,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

рони 24.03.2022 17:16

Dmitry1988,
что такое id?

Dmitry1988 24.03.2022 17:25

Обозначение позиции товара a,b,c,d,e. строка 60 в коде

рони 24.03.2022 17:28

Цитата:

Сообщение от Dmitry1988
Обозначение позиции товара a,b,c,d,e.

let objJson = {
  "a" : {
    "name" : "coca-cola",
    "cost" : "10",
    "description" : "описание товара 1",
    "image" : "img/Coca-Cola.jpg",
    "type" : "drink",
    "link" : "46147110",
     "pos" : "1"
  },
  "b" : {
    "name" : "кофе",
    "cost" : "10",
    "description" : "описание товара 2",
    "image" : "img/cofe.jpg",
    "link" : "goods/tb-2.html",
    "type" : "drink",
     "pos" : "46147111"
  },
  "c" : {
    "name" : "чипсы",
    "cost" : "30",
    "description" : "описание товара 3",
    "image" : "img/chips.jpeg",
    "link" : "46147112",
    "type" : "snack",
     "pos" : "3"
  },
     "d" : {
    "name" : "сендвич",
    "cost" : "40",
    "description" : "описание товара 4",
    "image" : "img/sandvich.png",
    "link" : "46147113",
    "type" : "pie",
     "pos" : "4"
  },
  "e" : {
    "name" : "coca-cola",
    "cost" : "10",
    "description" : "описание товара 1",
    "image" : "img/Coca-Cola.jpg",
    "type" : "drink",
    "link" : "46147114",
     "pos" : "5"
  }
};
let barcode = "46147110";

function findId(barcode)
{
   for(let [id, obj] of Object.entries(objJson)){
       if(obj.link == barcode) return id
   }
}
let id = findId(barcode);
alert(id);

Dmitry1988 24.03.2022 17:34

Спасибо, то что надо :thanks:


Часовой пояс GMT +3, время: 13:30.