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

JavaScript/JSON-使用键名作为索引访问数组元素,javascript,arrays,json,discord,Javascript,Arrays,Json,Discord,我希望能够通过使用唯一的键名而不是数字索引来访问数组元素。在我的情况下,我正在制作一个Discord机器人,每个服务器都有自己的设置。当有人在服务器上发送消息时,我希望访问此服务器的一些设置(例如消息前缀)。重要提示:目前,我唯一能做到这一点的方法是在bot所在的所有服务器中循环,从长远来看,如果有数百个活动服务器发送消息,这可能会降低它的速度。现在已经在所有服务器上循环了,但是我想要一种直接的方式,而不必这样做 conf.json: { "Settings": [ "

我希望能够通过使用唯一的键名而不是数字索引来访问数组元素。在我的情况下,我正在制作一个Discord机器人,每个服务器都有自己的设置。当有人在服务器上发送消息时,我希望访问此服务器的一些设置(例如消息前缀)。重要提示:目前,我唯一能做到这一点的方法是在bot所在的所有服务器中循环,从长远来看,如果有数百个活动服务器发送消息,这可能会降低它的速度。现在已经在所有服务器上循环了,但是我想要一种直接的方式,而不必这样做

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无效之外,您可以将服务器设置存储为一个对象而不是一个数组,而access就像您尝试的那样:

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

这是无效的JSON。数字索引是唯一的键名。它们只是碰巧是数字的键名。您可以使用另一个具有键值的数据结构。pairI尝试过这一点,但如何在Javascript中获取对象?使用console.log(conf.Settings.message.guild.id);甚至var GuildID=message.guild.id;log(conf.Settings.GuildID);不输出对象,但“undefined”不管我最后的评论是什么,我发现我可以这样使用它:console.log(conf.Settings[message.guild.id]);谢谢你,伙计!:)