我有一个生成html的for循环。我希望这个方法能随机生成元素。现在它们是基本生成的,也就是d1,d2,...迪。我希望它们遵循一个随机序列,即d1,di,di-3,..迪克。
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';
}在这方面的任何帮助都将非常感谢。谢谢。
发布于 2021-09-29 19:38:39
这是表生成器的一个稍短的实现,使用Durstenfeld生成任意顺序的idx数组,然后使用该数组输出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>
https://stackoverflow.com/questions/69382004
复制相似问题