Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/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 数组中无重复的随机数据_Javascript_Jquery_Html_Arrays_Random - Fatal编程技术网

Javascript 数组中无重复的随机数据

Javascript 数组中无重复的随机数据,javascript,jquery,html,arrays,random,Javascript,Jquery,Html,Arrays,Random,我对此有意见 我只是想知道是否有一种方法可以使数组在循环结束时不重复 HTML: 一种选择:先洗牌 @米奇麦在上面的评论中给出了一个很好的线索。提前洗牌数据是一种选择: 使用Fisher-Yates Shuffle洗牌数据 每次点击按钮,只需在数据中迭代并显示下一个 当你到达终点时,重新洗牌 FWIW:Fisher-Yates洗牌非常容易实现。。。有点像: 函数洗牌(arr){ 变量i,j,a,b; 对于(i=arr.length-1;i lookup“Fisher-Yates Shuffle”

我对此有意见 我只是想知道是否有一种方法可以使数组在循环结束时不重复

HTML:

一种选择:先洗牌 @米奇麦在上面的评论中给出了一个很好的线索。提前洗牌数据是一种选择:

  • 使用Fisher-Yates Shuffle洗牌
    数据
  • 每次点击按钮,只需在
    数据
    中迭代并显示下一个
  • 当你到达终点时,重新洗牌
  • FWIW:Fisher-Yates洗牌非常容易实现。。。有点像:

    函数洗牌(arr){
    变量i,j,a,b;
    
    对于(i=arr.length-1;i lookup“Fisher-Yates Shuffle”你所说的数组在循环结束时不重复是什么意思?@MitchWheat是正确的,但使用Fisher-Yates shuffling原理的方法不止一种。我在回答中给出了两种选择,并考虑了主动式shuffling和惰性shuffling。
    <div id="words" class="word"></div>  
    <button>word</button>
    
    $(function () {
        var data = {"seed": [
                {
                    "num1":"title1",
                    "num2":"title2",
                    "num3": [ "1","2","3" ]
                },
                {
                    "num1":"title3",
                    "num2":"title4",
                    "num3": [ "a","b","c" ]
                },
                {
                    "num1":"title5",
                    "num2":"title6",
                    "num3": [ "d","gh","34" ]
                }
        ]};
        var conta = data.seed.length;
        var recorre = data.seed;
        //alert(conta);
    
        function getNumbers() {
            var jokeId = Math.floor((Math.random()*conta));
            var joke = $('.word');
            var result = data.seed[jokeId].num3;
            var categ = data.seed[jokeId].num1;
            joke.empty()
            for (var c in result) {
                var newElement = document.createElement('div');
                newElement.id = result[c];  
                newElement.innerHTML = result[c]; 
                joke.append(newElement);
            }
        }
    
        $( "button" ).click(function() {
            getNumbers();
        });
    });