嵌套For循环项目和输出行

时间:2015-05-28 02:21:59

标签: javascript for-loop

我是编程的新手,我正在尝试遍历项目列表并将其输出为每行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;
}

3 个答案:

答案 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等是正常的。

&#13;
&#13;
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;
&#13;
&#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];
    }
}

我的语法和测试可能有点过时,所以仔细检查一切。

此外,我还假设您的实际物品在阵列中。