我試圖讓我的客戶知道它應該遵循哪個陣列。
var json = [{
command: "command 1",
giveRole: "884005303811702794"
}, {
command: "command 2",
giveRole : "948609651673563179"
}];
for (var key in json) {
if (json.hasOwnProperty(key)) {
console.log(json[key].command);
console.log(json[key].giveRole);
}
}
client.on('message', message => {
if (message.content.startsWith(json[key].command)) {
target.roles.add([json[key].giveRole]);
}
});
例如,如果我發送“命令 1”,它應該賦予角色“884005303811702794”而不是“948609651673563179”。
uj5u.com熱心網友回復:
所以你需要查一下。您可以使用 find 來執行此操作。
var json = [{
command: "command 1",
giveRole: "884005303811702794"
}, {
command: "command 2",
giveRole: "948609651673563179"
}];
function getCommand (command) {
return json.find(function (item) {
return item.command === command;
});
}
console.log("command 1", getCommand("command 1"));
console.log("command 2", getCommand("command 2"));
console.log("command 3", getCommand("command 3"));
其他選項是更改您的命令,使其成為物件而不是陣列。
var myCommands = {
"command 1": {
giveRole: "884005303811702794"
},
"command 2": {
giveRole: "948609651673563179"
},
};
function getCommand(command) {
return myCommands[command] || null;
}
console.log("command 1", getCommand("command 1"));
console.log("command 2", getCommand("command 2"));
console.log("command 3", getCommand("command 3"));
如果命令不是整個字串,你可以回圈
var json = [{
command: "command 1",
giveRole: "884005303811702794"
}, {
command: "command 2",
giveRole: "948609651673563179"
}];
function getCommand (command) {
return json.find(function (item) {
return command.toLowerCase().startsWith(item.command);
});
}
console.log("command 1", getCommand("command 1 eat pizza"));
console.log("command 2", getCommand("command 2 drink water"));
console.log("command 3", getCommand("command 3 dance"));
uj5u.com熱心網友回復:
首先,您似乎試圖通過使用鍵來查找陣列中的元素,但您的陣列沒有鍵控。
在 Javascript 中,您可以對陣列使用find方法。這將回傳陣列中回傳真值的第一個元素。
根據檔案的示例,您應該能夠使用以下命令找到有效的命令:
let json = [{
command: "command 1",
giveRole: "884005303811702794"
}, {
command: "command 2",
giveRole : "948609651673563179"
}];
const command = json.find(element => element.command === 'command 1');
存盤命令的另一種好方法是將其存盤在物件/關聯陣列中。前任:
const commands = {
command1: '884005303811702794',
command2: '948609651673563179',
}
console.log('command1', commands['command1'])
console.log('command2', commands['command2'])
這樣,您可以簡單地使用命令的值來獲得您想要的角色。
在您的情況下,當訊息以“命令 1”或“命令 2”開頭時,您似乎希望不和諧機器人發揮作用。如果你實作一個鍵控陣列,它看起來像這樣:
const commands = {
command1: '884005303811702794',
command2: '948609651673563179',
}
client.on('message', message => {
if (commands.hasOwnProperty(message.content)) {
target.roles.add(commands[message.content]);
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/438185.html
標籤:javascript 数组 json
上一篇:Restsharp向正文添加了guid,我該如何洗掉它?
下一篇:獲取資料時是否有某種通配符?
