Skip to content Skip to sidebar Skip to footer

How To Search Through Json And Find Every Occurrence Of A Specific Name (with Increment)

I have a JSON data, that I want to automatically find every occurrence of a specific name. { 'servergenre': 'Classic Rock', 'servergenre2': 'pop', 'servergenre3': 'rock', '

Solution 1:

Test each key of your JSON to see if it matches "servergenre". If it does, push the corresponding value to an array.

let json = {
  "servergenre": "Classic Rock",
  "servergenre2": "pop",
  "servergenre3": "rock",
  "servergenre4": "jazz",
  "servergenre5": "80s",
  "serverurl": "http://www.name.com",
  "servertitle": "ServerHero",
  "bitrate": "48",
  "samplerate": "0"
}

let result = []

Object.keys(json).forEach( key => {
  if(/servergenre/.test(key)) result.push(json[key])
})

console.log(result) // ["Classic Rock","pop", "rock","jazz","80s"]

Alternative method (inspired by osynligsebastian's answer) with filter and map :

let json = {
      "servergenre": "Classic Rock",
      "servergenre2": "pop",
      "servergenre3": "rock",
      "servergenre4": "jazz",
      "servergenre5": "80s",
      "serverurl": "http://www.name.com",
      "servertitle": "ServerHero",
      "bitrate": "48",
      "samplerate": "0"
    }

    let result = Object.keys(json)
                    .filter( key =>/servergenre/.test(key))
                    .map( key => json[key] )

    console.log(result) // ["Classic Rock","pop", "rock","jazz","80s"]

Solution 2:

Filter all keys containing the word "servergenre". See this fiddle

var data = {
  "servergenre": "Classic Rock",
  "servergenre2": "pop",
  "servergenre3": "rock",
  "servergenre4": "jazz",
  "servergenre5": "80s",
  "serverurl": "http://www.name.com",
  "servertitle": "ServerHero",
  "bitrate": "48",
  "samplerate": "0"
}

let keys = Object.keys(data).filter(key => key.indexOf('servergenre') > -1);

console.log(keys);

keys.forEach(key => {
  console.log(`${key}: ${data[key]}`);
});

Solution 3:

Steps :

  1. get the array of the properties using Object.keys() method.
  2. Use Array.filter() method on Object.keys() to filter out the elements from an array having same occurance(substring).
  3. Use string.includes() method to check if a string includes "servergenre".
  4. Use Array.length to get the counts of the element.

DEMO

var jsonObj = {
  "servergenre": "Classic Rock",
  "servergenre2": "pop",
  "servergenre3": "rock",
  "servergenre4": "jazz",
  "servergenre5": "80s",
  "serverurl": "http://www.name.com",
  "servertitle": "ServerHero",
  "bitrate": "48",
  "samplerate": "0"
};

var res = Object.keys(jsonObj).filter(item => { return item.includes("servergenre"); });

console.log(res.length);

Updated Answer as per the Jeremy Thille comment.In below demo, we are using indexOf () instead of includes().

var jsonObj = {
  "servergenre": "Classic Rock",
  "servergenre2": "pop",
  "servergenre3": "rock",
  "servergenre4": "jazz",
  "servergenre5": "80s",
  "serverurl": "http://www.name.com",
  "servertitle": "ServerHero",
  "bitrate": "48",
  "samplerate": "0"
};

var res = Object.keys(jsonObj).filter(item => { return item.indexOf("servergenre") != -1 });

console.log(res.length);

Solution 4:

varURL = "http://name.com/file.json"
    $.getJSON(URL, function(data) {
      for(var n in data)
      {
        if(n.substr(0,11)=="servergenre") alert(n);
      }
    });

Post a Comment for "How To Search Through Json And Find Every Occurrence Of A Specific Name (with Increment)"