循环以打印用逗号分隔的迭代,末尾不带逗号

Loop to print iterations separated with a comma, with no comma at the end

本文关键字:迭代 分隔 打印 循环      更新时间:2023-09-26

我是一名学生,正在编写一个JavaScript"for"循环,该循环打印到innerHTML中。字符串的每一个串联都会添加到最后一个,后面跟着一个逗号。如何使逗号在最后一次迭代后不打印?请注意,逗号不是作业的一部分,我只是想添加实际应用程序。没有jQuery,请

window.onload = function(){
  var mySeven = 0;
  var printSeven = document.getElementById('multiples_seven');
  for (i=1; i <= 1000; i++){
      if (i % 7 == 0){
      mySeven += i;
      printSeven.innerHTML += i + ',' + ' ';
      }
  }
};

谢谢!

您应该使用join()。它更干净,你不需要担心边缘案例:

  var printSeven = document.getElementById('multiples_seven');
  var sevens = [];
  for (i=1; i <= 1000; i++){
      if (i % 7 == 0){
        sevens.push(i);
      }
  }
  printSeven.innerText = sevens.join(", ");

或者一种避免if()语句和不必要迭代的方法:

  var printSeven = document.getElementById('multiples_seven');
  var sevens = [];
  for (i = 7; i <= 1000; i += 7){
     sevens.push(i);
  }
  printSeven.innerText = sevens.join(", ");

为了便于理解,以下是在没有join():的情况下如何做到这一点

  var printSeven = document.getElementById('multiples_seven');
  var maxValue = 1000;
  var list = "";
  for (i = 7; i <= maxValue; i += 7){
     list += i;
     if(i + 7 <= maxValue){
       list += ", ";
     }
  }
  printSeven.innerText = list;

使用此函数:

 function reorderData(){
   var sevens = Array();
   var printSeven = document.getElementById('multiples_seven');
   for (i=1; i <= 1000; i++){
     if (i % 7 == 0){
       sevens.push(i);
    }
  }
  var newDisplaySelectedArray = sevens.join(",");
  jQuery( "#multiples_seven" ).val(newDisplaySelectedArray);
}

首先最好不要在循环中操作DOM。您应该在字符串或数组中构造输出,然后通过一个操作将其添加到DOM中:

window.onload = function () {
  var mySeven = '';
  var printSeven = document.getElementById('multiples_seven');
  for (i=1; i <= 1000; i++){
      if (i % 7 == 0){
        mySeven += i + ', ';
      }
  }
  printSeven.innerHTML += mySeven;
};

要删除尾部逗号,有两个选项:不要在第一位置添加逗号,或者在将其添加到DOM之前将其删除。

大多数其他答案都集中在不添加它上,这里有一个删除它的解决方案:

window.onload = function () {
  var mySeven = '';
  var printSeven = document.getElementById('multiples_seven');
  for (i=1; i <= 1000; i++){
      if (i % 7 == 0){
        mySeven += i + ', ';
      }
  }
  printSeven.innerHTML += mySeven.slice (0, -2);
};

需要注意的是,如果for循环至少没有执行一次迭代,则可能会删除要显示的字符。在一般情况下,构建数组和使用join函数更容易,如这里的其他答案所示。

检查您是否在第一项比检查您是否位于最后一项更容易,所以只需在数字前添加逗号:

window.onload = function(){
  var mySeven = 0;
  var printSeven = '';
  for (i = 1; i <= 1000; i++) {
    if (i % 7 == 0){
      mySeven += i;
      printSeven += (printSeven.length > 0 ? ', ' : '') + i;
    }
  }
  document.getElementById('multiples_seven') += printSeven;
};