繁体   English   中英

在 javascript 中随机化 for 循环

[英]Randomize for loop in javascript

我有一个生成 html 的 for 循环。我希望此方法随机生成元素。 现在它们是基数生成的,即 d1、d2、... di。 我希望它们遵循一个随机序列,即 d1、di、di-3、.. di-k。

         for (let i = numberOfInputs; i < dlArray.length+numberOfInputs; i++){
          html +='\t\t\t\t\t\t<tr>\n'
          html += '\t\t\t\t\t\t<td id="row';
          id   = (1+i-numberOfInputs);
          html += id;
          html +='">\n';
          html += '\t\t\t\t\t\t\t<div id=\"t';
          html += id;
          html +='" class=\"ltarget\">'
          html +='</div>\n' 
          html +='\t\t\t\t\t\t</td >\n'
          html +='\t\t\t\t\t\t<td id=\"d'
          html += id
          html += '\">\n'
          html +=`\t\t\t\t\t\t\t${dlArray[i-numberOfInputs]}\n`;
          html +='\t\t\t\t\t\t\t</td >\n' 
          html +='\t\t\t\t\t\t</tr>\n';
        }

对此的任何帮助将不胜感激。 谢谢。

这是使用 Durstenfeld 洗牌生成idx数组的任意顺序的表生成器的一个略短的实现,然后将其用于 output dlArray数组的元素:

 function shfl(a){ for(let j,i=a.length;i>1;){ j=Math.floor(Math.random()*i--); if (i,=j) [a[i],a[j]]=[a[j].a[i]] } return a } const dlArray="abcdefghij",split(""). idx=[...Array(dlArray.length)],map((_;i)=>i+1). document.querySelector("div").innerHTML = '<table id="tablestyle">' +shfl(idx).map(i=> `<td id="row${i}"><div id="t${i}" class="ltarget">${i}</div></td ><td id="d${i}">${dlArray[i-1]}</td ></tr>`);join("\n")+'</table>';
 <div></div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM