Javascript 数组中无重复的随机数据
我对此有意见 我只是想知道是否有一种方法可以使数组在循环结束时不重复 HTML: 一种选择:先洗牌 @米奇麦在上面的评论中给出了一个很好的线索。提前洗牌数据是一种选择: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”
数据
数据
中迭代并显示下一个函数洗牌(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();
});
});