javascript - 如何搜索 JSON 并查找特定名称的每次出现(带增量)

标签 javascript jquery json loops

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

相关文章:

c# - 反序列化 json 对象数组,其中包含 json 对象

c - JSON 格式字符串上的 strtok 分隔符问题

javascript - 当 FireBug 启用时,matchMedia 返回 null

javascript - 我如何处理 setState 中的 promise ?

javascript - 是否可以在上传前检查图像尺寸?

javascript - jQuery hasClass 条件

java - 列表仅填充 JSON 中的一行,应该填充多行

javascript - 循环遍历元素列表以查看它们是否处于事件状态

javascript - 单击时将类添加到事件菜单

jquery - IE9不执行Ajax请求