带有随机变量的Javascript if else语句

标签 javascript if-statement

我读到有关战利品箱系统的信息,想制作属于我自己的幸运数字计算器。

我有 2 个数组,一个是常规数字,一个是获胜数字。 两个数字将被放入一个变量中,如果这两个数字都在获胜数组中,您就赢了!

现在我遇到的问题是,当我随机生成数字时,我的 if else 语句不再起作用。即使数字正确,它也总是会说 false。

如果您声明变量不是随机的,它确实有效(如下面的代码所示)。

如何使 if else 语句与随机生成器一起工作?

代码:

function go(){

var Numbers = ['one', 'two', 'three','four','five'];
var LuckyNumbers = ['three', 'four', 'seven']

var num1, num2;

num1 = Numbers.splice(Math.floor(Math.random() * Numbers.length), 1);//This doesnt work..
num2 = Numbers.splice(Math.floor(Math.random() * Numbers.length), 1);//This doesnt work..

// num1 ="three"; -> this works but it is not random
// num2 ="four";  -> this works but it is not random

if([num1, num2].every(item => LuckyNumbers.includes(item))) { //always false when using the randoms.
  console.log("yep")
} else{
  console.log('nope') 
}

最佳答案

这与您的 if 语句完全无关。 num1num2 没有存储您认为它们存储在您编写的代码中的内容。

Array.prototype.splice返回新数组中删除的元素。即使只有一个,您也需要在索引 0 处引用它:

var Numbers = ['one', 'two', 'three','four','five'];
var LuckyNumbers = ['three', 'four', 'seven']

var num1, num2;

num1 = Numbers.splice(Math.floor(Math.random() * Numbers.length), 1)[0];
num2 = Numbers.splice(Math.floor(Math.random() * Numbers.length), 1)[0];

if([num1, num2].every(item => LuckyNumbers.includes(item))) {
  console.log("yep")
} else{
  console.log('nope') 
}

编辑:为了给您一个更完整的答案——请注意,在这里使用 splice 并不像其他人所说的那么严重。是的,它改变了 Numbers 数组,但是每次调用 go 函数时都会重新创建 Numbers 数组。

在这种情况下,这是解决此问题的完全合理的方法,但如果您想要重构您的代码,使 NumbersLuckyNumbers 存储在某个父级中范围,您需要了解这些突变:

const Numbers = ['one', 'two', 'three','four','five'];
const LuckyNumbers = ['three', 'four', 'seven']

function go() {
    // Slice with no arguments creates a clone of an array...
    var numbers = Numbers.slice();

    // Note I'm calling splice on `numbers` with a small `n` here...
    var num1 = numbers.splice(Math.floor(Math.random() * Numbers.length), 1)[0];
    var num2 = numbers.splice(Math.floor(Math.random() * Numbers.length), 1)[0];

    if([num1, num2].every(item => LuckyNumbers.includes(item))) {
      console.log("yep")
    } else{
      console.log('nope')
    }
}

关于带有随机变量的Javascript if else语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50687890/

相关文章:

c++ - SSE 内在函数中的 if/else 语句

在 guard 语句中快速使用 break

java - 构建检查列表中枚举的 if 语句

javascript - 转换转换的 d3 转换不适用于 DIV

javascript - 使用维基百科的 opensearch api 时,主题标签符号不会填充数据列表。为什么?

python - 在if条件下使用两个任意功能时出错

ios - "if"语句不能正常工作?

javascript - 三.JS Mesh位置平滑动画

javascript - nodejs - 在断开连接时完全删除用户(socketio)

javascript - 如何从正则表达式中删除第一个字符 [JS]