每10个元素加x个数字

时间:2019-02-20 13:33:08

标签: javascript for-loop count

我想每10个元素增加一个数字。

例如,

function myFunction() {

    for (var i = 1; i <= 100; i++)
    { 

        var d = i;
        document.getElementById("demo").innerHTML += d+"<br/>";

    }

}

输出:

  

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 ,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49 ,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74 ,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100

但是,我想要这样

  

1,2,3,4,5,6,7,8,9,10,16,17,18,19,20,21,22,23,24,25,31,32,33,34 ,35,36,37,38,39,40 ....

我想在10号后面加上5,在20号后面加上10,在30号后面加上15,在40号后面加上20,在50号后面加上25。我知道这很简单。但是,我没有任何结果。

JsFiddle

6 个答案:

答案 0 :(得分:4)

如果index变量的结果可除以10,则可以采用偏移量并将此值增加5。

var i,
    offset = 0,
    result = [];
    
for (i = 1; i <= 100; i++) {
    result.push(i + offset);
    if (i % 10 === 0) offset += 5;
}
console.log(result.join(' '));

答案 1 :(得分:1)

您可以使用模运算符%来检查当前数字(i)是否为10的倍数,如果是,则将5加到i

if (i % 10 === 0) {
  i += 5;
}

此外,我建议您保留要添加到页面上的所有数字的字符串,因为每次循环迭代查询并向DOM中添加内容是一项昂贵的操作,可以避免

请参见以下示例:

function myFunction() {
  var resultStr = ""
  for (var i = 1; i <= 100; i++) {
    resultStr += i + "<br/>";
    if (i % 10 === 0) {
      i += 5;
    }
  }
  
  document.getElementById("demo").innerHTML += resultStr;
}

myFunction();
<div id="demo"></div>

答案 2 :(得分:1)

我在第10个元素上使用了一个计数器来说明增量,并将结果简单地放在控制台上。显然,有些只是将数字加5,计数器选项只是设计偏好。

var arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21];
function myFunction(arr){
  var counter = 0;
  for(var i = 0; i<arr.length; i++){
    if (i%10 ==0){
      counter++;
    }
    arr[i] = arr[i]+(5*(counter-1));
  }
  console.log(arr);
};

myFunction(arr);

答案 3 :(得分:0)

像这样更改功能:

function myFunction() {

  for (var i = 1; i <= 100; i++) {
        var d = i;
    if (i > 1 && i % 10 === 1) {
            d = (i % 10) * 5 + i;
    }
    document.getElementById("demo").innerHTML += d + ",";
  }
}

答案 4 :(得分:0)

执行类似的操作:

function myFunction() {

    for (var i = 1; i <= 100; i++)
    { 
        var j=Math.floor(i/10);
        var x=5*j;
        var d = x+i;
        document.getElementById("demo").innerHTML += d+"<br/>";

    }

}

答案 5 :(得分:0)

扩展Nick Parsons提出的性能问题

var resultStr = ""
  for (var i = 1; i <= 100; i++) {
    resultStr += i + "<br/>";
    if (i % 10 === 0) {
      i += 5;
    }
  }

  document.getElementById("demo").innerHTML += resultStr;

innerHTML太慢了。
考虑以下代码,该代码采用了文档片段和香草.append()方法

const fragment = document.createDocumentFragment();
for (var i = 1; i <= 100; i++)
    {
        if( i % 10 === 0 )
            i += 5;
        fragment.append( document.createTextNode( i ) );
        fragment.append( document.createElement('BR') );
    }
document.getElementById('demo').append( fragment );

From my testing,使用文档片段的速度大约快2000(!)。