Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery-向数组中添加随机数,然后在打印数组之前检查是否有重复_Javascript_Html_Jquery_Css_Arrays - Fatal编程技术网

Javascript JQuery-向数组中添加随机数,然后在打印数组之前检查是否有重复

Javascript JQuery-向数组中添加随机数,然后在打印数组之前检查是否有重复,javascript,html,jquery,css,arrays,Javascript,Html,Jquery,Css,Arrays,我正在尝试编写一个“for”循环,它将遍历一个数组中30首歌曲的列表,然后打印一个数组中20个随机项的列表,不重复 var items = []; var songList = []; var pastSongs = []; for (i = 1; i <= 30; i++) { items.push("song" + i); } $(".btn").click(function getRandom() { for (g = 1;

我正在尝试编写一个“for”循环,它将遍历一个数组中30首歌曲的列表,然后打印一个数组中20个随机项的列表,不重复


var items = [];
var songList = [];
var pastSongs = [];

for (i = 1; i <= 30; i++) {
  items.push("song" + i);
}


$(".btn").click(function getRandom() {

  for (g = 1; g <= 20; g++) {

    var randomItem = (items[Math.floor(Math.random() * items.length)]);

    $("h2").text(randomItem);

    songList.push(randomItem);


    if (pastSongs.includes(randomItem)) {
      $("p").text("repeat");
    } else {
      $("p").text(songList);
      (pastSongs).push(randomItem);
    }

  }

});

var项目=[];
var-songList=[];
var passsongs=[];

对于(i=1;i请查看以下有关如何洗牌数组的内容:


然后你可以通过弹出最后10个元素或循环收集前10个元素来获取该数组的前20个元素。这样比随机选择足够的次数,然后在数组中筛选重复的元素更快,如果我只关注问题标题的话

向数组中添加随机数,然后在打印数组之前检查是否有重复

撇开“假定”用例不谈,其中建议的关于“洗牌现有数组”的副本将非常好。如果您想创建一个唯一的数字数组,其值的
数量
长度介于
min
max
之间,以下是方法:

函数GetArrayFuniqueranDomainNumber(最小值、最大值、数量){ 让结果=[]; 如果(金额!==未定义和金额log(getArrayOfuniqueRandomNumbers(0,30,20))
只需使用一个洗牌算法,这能回答您的问题吗?我的答案也可能有帮助