如何搜索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]}`); });
脚步 :
- 使用Object.keys()方法获取属性数组。
- 使用
Object.keys()
上的Array.filter()方法从具有相同出现次数(substring)的数组中过滤出元素。 - 使用string.includes()方法检查字符串是否包含“servergenre”。
- 使用
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); } });