我是编程的新手,我正在尝试遍历项目列表并将其输出为每行5个项目。下面的代码逻辑似乎有效,但我想知道是否有更有效的方法来做到这一点。我也很难命名我的变量,以便它们是可以理解的。关于如何使我的代码更具语义和效率的任何建议?
var items = 15;
var itemsPerRow = 5;
var rows = items/itemsPerRow;
var lastItemIndex=itemsPerRow;
var j=0;
for(var i=0;i<rows;i++){
console.log("Row "+(i+1));
for(;j<lastItemIndex;j++){
console.log(j);
}
lastItemIndex = lastItemIndex + itemsPerRow;
}
答案 0 :(得分:0)
如果没有换行符console.log
,则console.log
将无法在单独的一行开始。
一种解决方案可能是在内部循环中创建一个字符串,然后输出到控制台,就像这样
var items = 15;
var itemsPerRow = 5;
var rows = items/itemsPerRow;
var lastItemIndex=itemsPerRow;
var j=0;
var singleRow = '';
for(var i=0; i<rows; i++){
console.log("Row "+(i+1));
singleRow = '';
for(; j<lastItemIndex; j++){
singleRow += j + ' ';
}
console.log(singleRow);
lastItemIndex = lastItemIndex + itemsPerRow;
}
答案 1 :(得分:0)
缓冲输出并一次写入所有内容通常效率更高,但这取决于您正在做什么。例如,在更新HTML文档时,构建输出字符串然后更新文档是有意义的,否则每次更新时都会使文档难以重新绘制。内部for循环通常以不同方式完成,但实现没有任何问题,变量名称i,j等是正常的。
var items = 15;
var itemsPerRow = 5;
var rows = items/itemsPerRow;
var lastItemIndex=itemsPerRow;
var j=0;
var output = "";
for(var i=0;i<rows;i++){
var row = "Row "+(i+1) + "\t";
for(var j = 0; j < itemsPerRow;j++){
row += j + "\t";
}
output += row + "\n"
}
document.getElementById("output").innerHTML = output;
&#13;
<pre id="output"></pre>
&#13;
答案 2 :(得分:0)
您的代码似乎很好,但有点不寻常。
另一种技术是循环,累加器和if:
for(var i=0;i<items.length;i++){
if (i%5==0){
console.log(accumulator);
accumulator = "";
else{
accumulator = accumulator + " " + items[i];
}
}
我的语法和测试可能有点过时,所以仔细检查一切。
此外,我还假设您的实际物品在阵列中。