我有一个 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"]
带有过滤器和 map 的替代方法(受 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/