javascript - 不和谐 : Using a command to get Data from Array

标签 javascript node.js arrays json discord.js

我一直在尝试为此浏览许多不同类型的教程,但我所做的一切似乎都没有用。对于我的 discord 机器人,我创建了一个包含以下对象的 json 文件

{"trainer":[{"name":"Bob","C0":45,"C1":84,"C2":147},
    {"name":"Paul","C0":60,"C1":104,"C2":167}],
"prefix":!
}

现在我想弄清楚如何发出命令,如果有人输入 !trainer Bob,我希望机器人显示 CO、C1 和 C2 的值

目前我有以下内容:

const args = message.content.slice(X.prefix.length).split(/ +/);
const command = args.shift().toLowerCase();

X 是 json 文件的名称。以下是我卡住​​的地方

 if(command === "trainer"){
    message.channel.send('WHAT DO I PUT HERE?')
}

现在我对这一切都很陌生,但如果我的理解是正确的,在这种情况下我的参数 0 是训练器,所以我想要的是使用我的第一个参数(这将是 !trainer 之后的名称)来链接回我的 json 文件中的数组,以便我可以获得数组中的其他值。现在我想做的是用 Shift(1) 创建一个 const,以便 const 包含我的第一个参数,但我仍然不确定如何使用它从数组中获取信息。对此的任何指导将不胜感激!

最佳答案

您可以 filter根据用户的第一个参数,您的 json 数据中可用的培训师应该是培训师的名字。如果 json 数据中的名称与用户请求的培训师匹配,您可以使用 template literal干净地构造要发送的字符串,否则您可以告诉用户培训师不存在。

let queriedTrainerName = args[0];
let trainersArray = X.trainer;
let matchingTrainers = trainersArray.filter(trainerObject => trainerObject.name.toLowerCase() === queriedTrainerName.toLowerCase());
if (matchingTrainers.length > 0) {
    let firstMatch = matchingTrainers[0];
    message.channel.send(`For trainer ${queriedTrainerName}: C0 is ${firstMatch.C0}, C1 is ${firstMatch.C1}, C2 is ${firstMatch.C2}`);
} else message.channel.send(`Trainer ${queriedTrainerName} does not exist!`);

关于javascript - 不和谐 : Using a command to get Data from Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62869436/

相关文章:

javascript - 使用 Emotion.sh 从样式组件传递 Prop

javascript - 在nodejs中断言模块使用?

php - 从数据库表中打印格式化的多维数组

node.js - 如何修改 Mongoose 查询的输出?

node.js - 函数内nodejs变量的范围

javascript - 如果在另一个对象数组中找到属性,则映射对象

javascript - 使用扩展语法时如何根据索引更新数组元素?

javascript - AFrame:重新调整元素的父级,保持其世界位置、旋转

javascript - 字幕格式有什么问题?(Video.js)

javascript 删除或完全替换 HTML 标签