Sheena
Sheena

Reputation: 21

searching the specific value in nested object and returning the updated original object ith only searched item using javascript

searching the specific value in nested object and returning the updated original object with only searched item using javascript

 var people= {
      "i": [
        {
          "country": "Australia",
          "list": [
            {
              "name": "ABC   ",
              "address": "AB street ",
            }
          ]
        },
        {
          "country": "Brazil",
          "list": [
            {
              "name": "XZ   ",
              "address": "AB street "
            },
           ...
          ]
        }
      ]
     ...
    };

I want to search by name.

Upvotes: 0

Views: 73

Answers (1)

Ele
Ele

Reputation: 33726

Using function Object.keys() and breaking the deepest loop when a key === searchedText.

var pages = {  "1": [{    "title": "Australia",    "list": [{        "key": "Base1",        "label": "Base-label",        "description": "description"      },      {        "key": "Base1",        "label": "Base-label",        "description": "description"      }    ]  }],  "2": [{      "title": "Australia",      "list": [{          "key": "Base1",          "label": "Base-label",          "description": "description"        },        {          "key": "Base1",          "label": "Base-label",          "description": "description"        },        {          "key": "Base1",          "label": "Base-label",          "description": "description"        }      ]    },    {      "title": "Netherlands",      "list": [{          "key": "Base1",          "label": "Base-label",          "description": "description"        },        {          "key": "Base2",          "label": "Base-label",          "description": "description"        },        {          "key": "Base1",          "label": "Base-label",          "description": "description"        }      ]    }  ],  "3": [{      "title": "Usa",      "list": [{          "key": "Base2",          "label": "Base-label",          "description": "description"        },        {          "key": "Base1",          "label": "Base-label",          "description": "description"        }      ]    },    {      "title": "Canada",      "list": [{          "key": "Base1",          "label": "Base-label",          "description": "description"        },        {          "key": "Base1",          "label": "Base-label",          "description": "description"        },        {          "key": "Base2",          "label": "Base-label",          "description": "description"        }      ]    }  ]};

var filteredPages = {};
var searchedText = "Base2";
for (var k of Object.keys(pages)) {
  for (var o of pages[k]) {
    for (var io of o.list) {
      if (io.key.toLowerCase().indexOf(searchedText.toLowerCase()) !== -1)  {
        filteredPages[k] = filteredPages[k] || [];
        filteredPages[k].push({
          title: o.title,
          list: [io]
        });
      }
    }
  }
}

console.log(filteredPages)
.as-console-wrapper {
  max-height: 100% !important;
  top: 0;
}

Upvotes: 1

Related Questions