首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript中的随机化for循环

javascript中的随机化for循环
EN

Stack Overflow用户
提问于 2021-09-29 18:55:39
回答 1查看 65关注 0票数 0

我有一个生成html的for循环。我希望这个方法能随机生成元素。现在它们是基本生成的,也就是d1,d2,...迪。我希望它们遵循一个随机序列,即d1,di,di-3,..迪克。

代码语言:javascript
复制
         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';
        }

在这方面的任何帮助都将非常感谢。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-29 19:38:39

这是表生成器的一个稍短的实现,使用Durstenfeld生成任意顺序的idx数组,然后使用该数组输出dlArray数组的元素:

代码语言:javascript
复制
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>';
代码语言:javascript
复制
<div></div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69382004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档