3

I want to know how to search inside nested array using typescript For example, if user inputs KNOR I want to show the entire group instead of the item. that means I want to check the Name field and get the result.

Below is the JSON Structure

    {
        group_id: 61,
        sortid: "1",
        group_items: [
            {
                group_id: "61",
                id: "1",
                code: "1",
                name: "ASTRA MARGARINE 1KG",
                bulkprice: "800.00",
                description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ",
                picture: [
                            "img/itemlist/astra/a1.png",
                            "img/itemlist/astra/a2.png"
                        ],
                qty: "2",
                active: "0",
                availableqty: "100",
                itemprice: "400.00"
            },
            {
                group_id: "61",
                id: "1",
                code: "4",
                name: "KNOR CHICKEN CUBE 28S CONTAINER 280G",
                bulkprice: "700.00",
                description: " Interdum et malesuada fames ac ante ipsum primis in faucibus. Nam at enim sit amet ligula semper tempus.",
                picture: [
                            "img/itemlist/knor/k1.png",
                            "img/itemlist/knor/k2.png"
                        ],
                qty: "10",
                active: "0",
                availableqty: "1",
                itemprice: "25.00"
            }
        ]
    },
{
      group_id: 64,
      sortid: "2",
      group_items: [{
               group_id: "64",
               id: "1",
               code: "3",
               name: "FLORA MARGARINE LARGE 500G",
               bulkprice: "20.00",
               description: "Aenean vehicula imperdiet ex, in lacinia magna 
               bibendum sed.",
               picture: [
                          "img/itemlist/flora/f1.1.png",
                          "img/itemlist/flora/f1.2.png",
                          "img/itemlist/flora/f1.png"
                        ],
               qty: "1",
               active: "0",
               availableqty: "500",
               itemprice: "700.00"
                }]

       }

Result I want is If user search for Knor

{
        group_id: 61,
        sortid: "1",
        group_items: [
            {
                id: "1",
                code: "1",
                name: "ASTRA MARGARINE 1KG",
                bulkprice: "800.00",
                description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ",
                picture: [
                            "img/itemlist/astra/a1.png",
                            "img/itemlist/astra/a2.png"
                        ],
                qty: "2",
                active: "0",
                availableqty: "100",
                itemprice: "400.00"
            },
            {
                id: "1",
                code: "4",
                name: "KNOR CHICKEN CUBE 28S CONTAINER 280G",
                bulkprice: "700.00",
                description: " Interdum et malesuada fames ac ante ipsum primis in faucibus. Nam at enim sit amet ligula semper tempus.",
                picture: [
                            "img/itemlist/knor/k1.png",
                            "img/itemlist/knor/k2.png"
                        ],
                qty: "10",
                active: "0",
                availableqty: "1",
                itemprice: "25.00"
            }

Appreciate the quick help.

DIMMU SAMZ
  • 31
  • 3

2 Answers2

0

you use following funciton for solve this problem ....

test(){
    var data = {
      group_id: 61,
      sortid: "1",
      group_items: [
          {
              group_id: "61",
              id: "1",
              code: "1",
              name: "ASTRA MARGARINE 1KG",
              bulkprice: "800.00",
              description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ",
              picture: [
                          "img/itemlist/astra/a1.png",
                          "img/itemlist/astra/a2.png"
                      ],
              qty: "2",
              active: "0",
              availableqty: "100",
              itemprice: "400.00"
          },
          {
              group_id: "61",
              id: "1",
              code: "4",
              name: "KNOR CHICKEN CUBE 28S CONTAINER 280G",
              bulkprice: "700.00",
              description: " Interdum et malesuada fames ac ante ipsum primis in faucibus. Nam at enim sit amet ligula semper tempus.",
              picture: [
                          "img/itemlist/knor/k1.png",
                          "img/itemlist/knor/k2.png"
                      ],
              qty: "10",
              active: "0",
              availableqty: "1",
              itemprice: "25.00"
          }
      ]
  }

   console.log('name',data)
  for(let i=0;i<data.group_items.length;i++){
    console.log('name',data.group_items[i].name)
  }
  }
ashishdudhat
  • 180
  • 3
  • 9
0

I have written a very simple to use library ss-search.

In your case to search the nested array, you would do the following:

search(data, ["name"], "KNOR")

This will filter out the data to return only results containing "KNOR" in the name property.

Yann Thibodeau
  • 1,111
  • 1
  • 12
  • 20