如何将随机设置的单词值分配给变量 Javascript? (不和谐 JS v12H

Posted

技术标签:

【中文标题】如何将随机设置的单词值分配给变量 Javascript? (不和谐 JS v12H【英文标题】:how do i assign a random set word value to a variable Javascript? (Discord JS v12H 【发布时间】:2020-10-16 10:17:46 【问题描述】:

我正在尝试用我的不和谐机器人做一个猜谜游戏,当我输入“!猜谜游戏”时,它会反应三个表情符号:1️⃣、2️⃣、3️⃣。然后它随机选择其中一个表情符号并将其分配给变量“answer”。如果我单击与设置为“answer”变量的表情相对应的表情符号,那么它会说“恭喜!您猜对了数字!”,如果没有,它会说“哇!下次好运!”什么的。

这是我的代码:

 if (msg.content === "!guessing game") 
        常量过滤器=(反应,用户)=> 
            return ['1️⃣', '2️⃣', '3️⃣'].includes(reaction.emoji.name) && user.id === msg.author.id;
        ;
        msg.react('1️⃣');
        msg.react('2️⃣');
        msg.react('3️⃣');
        msg.awaitReactions(filter,  max: 1, time: 60000, errors: ['time'] )
        .then(收集 => 
        常量反应 = 收集.first();
        var num = Math.floor(Math.random() * 3) + 1;
        if (num === "1")
            var answer = "1️⃣"
        
        别的
            if (num === "2")
                var answer = "2️⃣"
            
            别的
                if (num === "3")
                    var answer = "3️⃣"
                
                别的
                   console.log("随机数失败")
          
                
            
        
        如果(reaction.emoji.name === 答案)
            msg.reply('你做到了!');
        
        别的
            msg.reply('下次祝你好运!');
        
        


    )

当然,这就是我的控制台所说的:“随机数失败” 我觉得选择一个随机表情符号而不是随机数然后将其转换为表情符号会更有效。

有人知道如何解决这个问题吗?

(如果你可以让它不区分大小写,我也会非常感激,因为我似乎无法弄清楚。)

【问题讨论】:

【参考方案1】:

您应该在if (num === "1") 语句中使用== 而不是===,或者删除数字周围的双引号 - if (num === 1)。 那是因为 === 运算符更严格 - 它代表比较值和值的类型。 Math.random() 函数返回 number 类型的值,因此您将 numberstring 进行比较:

console.log(3 == "3"); // will return true
console.log(3 === "3"); // will return false

更多信息在这里: https://developer.mozilla.org/en-US/docs/Web/javascript/Guide/Expressions_and_Operators

【讨论】:

啊。谢谢。当我使用变量时,我会记住这一点。 您知道如何处理不区分大小写的问题吗?当我说!猜谜游戏时,它不起作用,所以我需要制作它,以便将其全部转换为小写。 @Datonebassdude 使用:YourVariable.toLowerCase(); :)【参考方案2】:

您还可以使用以下方法使您的代码更短:

const numbers = ['1️⃣','2️⃣','3️⃣'];
let randNum = numbers[Math.floor(Math.random() * numbers.length)];
// Output : '1️⃣' or '2️⃣' or '3️⃣' :)

【讨论】:

@Datonebassdude 没问题 :) 请考虑使用旁边的箭头为对您有帮助的答案投票 :)

以上是关于如何将随机设置的单词值分配给变量 Javascript? (不和谐 JS v12H的主要内容,如果未能解决你的问题,请参考以下文章

如何将csv中的单词分配给变量? [复制]

如何防止 github.com/ory/dockertest 将容器分配给随机端口?

如何将值分配给数组中的随机位置?

Powershell根据给定的计数选择一个随机字母,并动态地将每个字母分配给一个唯一的变量?

将字符串变量分配给空格字符“”以查找重复的单词

核心数据 - 如何将核心数据中的属性值分配给变量