2017-09-18 4 views
-1

数値インデックスの代わりに一意のキー名を使用して配列要素にアクセスできるようにしたい。私の状況では、Discordボットを作っていて、各サーバーには独自の設定があります。誰かがサーバー上でメッセージを送信すると、このサーバーの設定(メッセージプレフィックスなど)の一部にアクセスする必要があります。重要:今は、ボットが入っているすべてのサーバをループする唯一の方法ですが、何百ものアクティブなサーバがメッセージを送信している場合、長期的には遅くなる可能性があります。だから、すべてのサーバーをループしているのはすでに完了していますが、私はこれをすることなく直接的な方法を望んでいます。JavaScript/JSON - キー名をインデックスとして使用して配列要素にアクセスする

conf.json:私は私のbot.jsで行うことができるようにしたいどのような

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

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 '$' 

私は同様の目標を達成することができる方法の任意のアイデアをループすることなく、すべての配列を通して?

EDIT: 私は次のJSONが無効であることは知っていますが、私は同じ結果をもたらす解決策が必要です。

+3

すなわちJSONが無効です。 – Quentin

+1

数値索引**は**ユニークなキー名です。彼らは数字に過ぎないキー名です。 – Quentin

+0

他のデータ構造体とキー値のペア –

答えて

2

別にあなたが投稿JSONが無効であることから、あなたはオブジェクトではなく、配列としてサーバーの設定を格納することができ、あなたがしようとしているだけのようにアクセスがある:

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

私はそれを試みましたが、どのようにオブジェクトをJavascriptで取得できますか?を使用してください console.log(conf.Settings.message.guild.id);またはさらに var GuildID = message.guild.id; console.log(conf.Settings.GuildID); オブジェクトは出力されませんが、「未定義」 – MaxiJonson

+1

最後のコメントがないので、この方法で使用できることがわかりました。 console.log(conf.Settings [message.guild.id]); ありがとうございました! :) – MaxiJonson

関連する問題