如何搜索JSON并查找每个特定名称(带增量)

我有一个JSON数据,我想自动查找每个特定名称的出现。

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

在这里servergenre重复几次增量( 2,3,4,5 and ... )因为我不知道很多servergenre将在JSON中,我需要一个方法来循环它并找到尽可能多的因为存在servergenre实例并且可能在数组中添加结果。

类似下面这样的代码:

 var URL = "http://name.com/file.json" $.getJSON(URL, function(data) { var i = 1; $.each(data.servergenre + i, function(index, value) { /// CODE }); }); 

显然上面的代码不起作用,但这是我最初的想法。

那么任何更好的想法是让它工作并将所有现有的servergenre实例保存在一个数组中?

谢谢是提前。

测试JSON的每个密钥以查看它是否与“servergenre”匹配。 如果是,请将相应的值推送到数组。

 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"] 

过滤包含“servergenre”一词的所有密钥。 看到这个小提琴

 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]}`); }); 

脚步 :

  1. 使用Object.keys()方法获取属性数组。
  2. 使用Object.keys()上的Array.filter()方法从具有相同出现次数(substring)的数组中过滤出元素。
  3. 使用string.includes()方法检查字符串是否包含“servergenre”。
  4. 使用Array.length获取元素的计数。

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); 
  var URL = "http://name.com/file.json" $.getJSON(URL, function(data) { for(var n in data) { if(n.substr(0,11)=="servergenre") alert(n); } });