对象的返回值

我正在尝试为我的 discord.js 机器人创建一个积分系统(您可以使用命令进行验证以检查您是否完成了挑战,如果是,机器人会给您积分)。我找不到检查值是否正确的方法。该命令如下所示:


!verify <flag-name> <value>

这是我的代码:


const Discord = require('discord.js');

const flag = {

 flag1: { value: 'test', points: 20 },

 flag2: { value: 'test2', points: 30 },

};


module.exports.run = async (client, message) => {

 let args = message.content.slice(4).split(' ');

 var keys = Object.keys(flag);


 keys.forEach((key) => {

  if (key == args[2]) {

   var str = JSON.stringify(keys);

   var result = JSON.parse(str);

   console.log(result['value']);

  }

 });

};

问题是result['value']总是返回undefined,即使我知道标志名称和值是有效的。


哆啦的时光机
浏览 120回答 1
1回答

互换的青春

Object.entries()您可以使用和检查值是否正确Array.prototype.find()const flag = { flag1: { value: 'test', points: 20 }, flag2: { value: 'test2', points: 30 },};module.exports.run = async (client, message) => { // get the challenge and value using destructuring let [cmd, challenge, value] = message.content.slice(4).split(' '); // find the entry with both names matching the names given const result = Object.entries(flag).find(  ([flag, data]) => flag === challenge && data.value === value ); // provide an error if nothing is found if (!result)  return message.channel.send('Not a valid value and/or flag'); // do something with the points console.log(result[1].points)};JSFiddle
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript