Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Filtering nested JSON javascript

I'm creating an API that takes a JSON like this:

 "hightlights":[
  {
     "title":"Fun",
     "url":"fun/index.html",
     "queries":
     [
        "music",
        "artists",
        "events",
        "internet"
     ]
  },
  {
     "title":"Internet",
     "url":"internet/index.html",
     "queries":
     [
        "javascript",
        "web",
        "internet",
     ]
  }
 ] 

I need to filter the JSON with a word given by user and return with another JSON with only object that contains the word in "queries".

 If word === 'music', receive:
 {
     "title":"Fun",
     "url":"fun/index.html",
     "queries":[
        "music",
        "artists",
        "events",
        "internet"
     ]
 }

 If word === 'internet', receive:
 {
     {
     "title":"Fun",
     "url":"fun/index.html",
     "queries":[
        "music",
        "artists",
        "events",
        "internet"
     ]
  },
  {
     "title":"Internet",
     "url":"internet/index.html",
     "queries":[
        "javascript",
        "web",
        "internet",
     ]
  }

My problem is how to nest this values? If anyone can give me some example...I'll appreciate...

like image 747
kalin Avatar asked Sep 18 '25 02:09

kalin


1 Answers

Try the below:

function getResult(filterBy, objList) {
  return objList.hightlights.filter(function(obj) {
   return obj.queries.some(function(item){
     return item.indexOf(filterBy) >= 0;
   });
 });
}

Input#1:

getResult("internet", yourObject);

Output #1:

[{"title":"Fun","url":"fun/index.html","queries":["music","artists","events","internet"]},{"title":"Internet","url":"internet/index.html","queries":["javascript","web","internet"]}]

Input #2:

getResult("music", yourObject);

Output #2:

[{"title":"Fun","url":"fun/index.html","queries":["music","artists","events","internet"]}]
like image 72
Kelsadita Avatar answered Sep 20 '25 16:09

Kelsadita