猿问

失去逻辑!javaScript中的随机唯一数字

我需要编写一个函数来生成 0 到 60 之间的 6 个随机数,然后将它们存储在给定的数组中。此外,此函数无法在返回的数组中存储重复项。好吧,我在 StackOverflow 上找到了一个非常有用的答案(感谢 Shouvik),我将在下面展示。

但这是我拥有大部分逻辑但错过了两个核心要素的东西

  1. 我试图在没有第二个临时数组的情况下执行此操作

  2. 我不知道如何在数组中找到重复项

我知道我必须 .indexOF 数组 我知道我必须 .push 一个新值到数组

这是我在找到解决方案之前的代码:

function gerarDezenas() {

  let jogo = [];

  for (var i = 0;i < 6;i++) {

    jogo.push(Math.round(Math.random()*(1 , 60)+1));


    if (jogo.indexOf(jogo) == //clueless)c{

         .push() // ?? clueless either

    }

  }


  return jogo

}

console.log(gerarDezenas())

所以我发现我需要另一个数组和 if 条件来比较它


function gerarDezenas() {

  let jogo = []; 

  for (var i = 0; i < 6; i++) {

    var temp = Math.round(Math.random()*(1 , 60)+1);

    if (jogo.indexOf(temp) == -1) {

        jogo.push(temp)

    }

    else {

        i--;

    }

  }

  return jogo

}

该代码现在可以按预期工作,但我并不真正理解它并且这里的问题!我不知道这些行在做什么:


if (jogo.indexOf(temp) == -1) {

    jogo.push(temp)

}

else {

      i--;

}

有人可以向我澄清 if 和 else 在做什么吗?


如果您阅读了帖子,非常感谢!

附图请不要恨我


至尊宝的传说
浏览 138回答 3
3回答

鸿蒙传说

/*Check whether array named jogo has the temp element inside it, if not add the temp element to jogo. */if (jogo.indexOf(temp) == -1){&nbsp; &nbsp; jogo.push(temp)&nbsp; &nbsp; }/*When you are inside this if else block the i's value must have been increased, now iftemp is not being inserted because it's already there in the array, decrement i so that the if else block again runs with the same I what it was earlier before increment.*/&nbsp; &nbsp; else {&nbsp; &nbsp; &nbsp; i--;&nbsp; &nbsp; }

收到一只叮咚

此代码循环遍历整个数组以检查随机数是否在数组内。但如果不是,它将输出 -1 表示当前随机数没有重复if&nbsp;(jogo.indexOf(temp)&nbsp;==&nbsp;-1)虽然此代码只是反转循环,因此它取消了 i++。i--;

烙印99

如果 temp(随机数)不在 jogo 数组中(如果找不到值,indexOf 总是返回 -1)if (jogo.indexOf(temp) == -1)const arr = ["A","B","C"];console.log(arr.indexOf("D"));console.log(arr.indexOf("C"));然后将其添加到数组中jogo.push(temp)否则重做循环,希望得到一个不在 jogo 数组中的数字(-- 会抵消 ++ )&nbsp;i--;let i = 5;i--i++console.log(i);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答