我有一个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/

10-12 15:39