我希望能够使用唯一键名而不是数字索引来访问数组元素。在我的情况下,我制作了一个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无效,但我想要一个能给出相同结果的解决方案。
答案 0 :(得分:2)
除了您发布的JSON无效之外,您可以将服务器设置存储为对象而不是数组,并且访问就像您尝试的那样:
{
"Settings": {
"358262452343013386": {
"prefix": "$",
"Admins": [
"155444308395294720"
],
"NotificationChannel": "358772856282284033",
"robotpieces": []
}
}
}