我有一个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 ...
)重复了几次,因为我不知道JSON中会有多少servergenre
,我需要一种方法来遍历它并查找尽可能多的次数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"]
过滤器和地图的替代方法(由osynligsebastian的答案启发):
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"]
关于javascript - 如何搜索JSON并查找每个出现的特定名称(带有增量),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43872505/