JavaScript / JSON-使用键名AS索引访问数组元素



我希望能够使用唯一的密钥名称而不是数字索引来访问数组元素。在我的情况下,我正在制作一个Discord机器人,每个服务器都有自己的设置。当有人在服务器上发送消息时,我想访问该服务器的某些设置(例如消息前缀)。重要的是:目前,我唯一可以做到这一点的方法是循环浏览机器人所在的所有服务器,从长远来看,如果有数百个主动服务器发送消息,它可能会减慢其速度。因此,通过所有服务器循环已经完成,但是我想要一种直接的方法而无需这样做。

conf.json:

{
    "Settings": [
         "358262452343013386" {
             "prefix": "$",
             "Admins": [
                 "155444308395294720"
             ],
             "NotificationChannel": "358772856282284033",
             "robotpieces": []
         }
    ]
}

我想在bot.js中做的事情:

console.log(conf.Settings[message.guild.id].prefix); // outputs the prefix
// message.guild.id is the id of the server, which in this case, would translate to this:
console.log(conf.Settings["358262452343013386"].prefix) // outputs '$'

关于我如何实现类似目标而无需循环整个数组的任何想法?

编辑:我知道以下JSON无效,但我想要一个可以给出相同结果的解决方案。

除了您发布的JSON无效的事实外,您可以将服务器设置存储为对象而不是数组,并且访问就像您一样正在尝试:

{
    "Settings": {
         "358262452343013386": {
             "prefix": "$",
             "Admins": [
                 "155444308395294720"
             ],
             "NotificationChannel": "358772856282284033",
             "robotpieces": []
         }
    }
}

最新更新