Javascript 如何在json数组中定义重复键?

Javascript 如何在json数组中定义重复键?,javascript,node.js,json,Javascript,Node.js,Json,我正在制作一个程序,解析json文件中的dnd信息。我已经完成了程序,但是,如果不手动提供数千个密钥的唯一ID,我无法确定如何为各种攻击定义重复密钥 我的JSON文件的一部分: 那么,我将如何定义每个name键呢? 如果我可以将我发布的内容定义为searchFile.special_abilities,我将如何定义searchFile.special_abilities.name?我建议使用数组对象,按名称索引,这样名称就不会重复,也不需要单独的唯一标识符。例如: "special_abil

我正在制作一个程序,解析json文件中的dnd信息。我已经完成了程序,但是,如果不手动提供数千个密钥的唯一ID,我无法确定如何为各种攻击定义重复密钥

我的JSON文件的一部分:

那么,我将如何定义每个
name
键呢?
如果我可以将我发布的内容定义为
searchFile.special_abilities
,我将如何定义
searchFile.special_abilities.name

我建议使用数组对象,按名称索引,这样名称就不会重复,也不需要单独的唯一标识符。例如:

"special_abilities": {
  "Some Name": [
    {
      "desc": "Description 1",
      "attack_bonus": 0
    },
    {
      "desc": "Description 2",
      "attack_bonus": 5
    }
  ],
  "Some Other Name": [
    {
      "desc": "Some Other Description",
      "attack_bonus": 2
    }
  ]
}

然后,您可以访问
特殊功能['Some name']
以访问该数组,并在该数组上迭代以找到您要查找的内容。(使用
Object.entries
一次获取键和值,例如
Object.entries(特殊功能).forEach(([name,arr])=>{…

您的JSON是有效的。您可以这样访问解析的JSON数据:

const searchFile = JSON.parse(jsonVarName)

const index = 2 // or whatever index you want

const name = searchFile.special_abilities[index].name
您还可以使用各种方法对数据执行各种有趣的操作,例如按名称搜索:

const siegeMonster = searchFile.special_abilities.find(ability => ability.name === 'Siege Monster')

到目前为止,您尝试了什么?您需要将
特殊能力
更改为一个对象,该对象由
名称
大量互联网搜索、
搜索文件.特殊能力.name
搜索文件.特殊能力.name[1]
与“define”一起索引,您的意思是“访问”?您只需要执行
搜索文件.特殊能力[i].name
,其中
i
是一个整数,您可以更改它来访问每个单独的技能。问题是,我还必须手动为json文件中的数千个其他怪物实现它。请给我一个向上投票的机会,这样我就不会看起来像个傻瓜。哈哈哈,这是个酷的人,欢迎这么做。我没有拿着我的b瑞斯。
const siegeMonster = searchFile.special_abilities.find(ability => ability.name === 'Siege Monster')