从for循环内部向数组添加元素

时间:2015-05-27 04:46:21

标签: javascript arrays for-loop

在下面的for循环中我有arr[i] = x * i;我基本上试图得到倍数。我现在的代码结果是[0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 我不希望数组的第一个元素为0 ..

var n = 10;
    var arr = [];
    var x = 2;
    for(var i = 0; i < n; i++ ){
        //arr[0] = x;
        arr[i] = x * i;
        // arr.push(x += x)
    }
    console.log(arr)

我希望能够做arr [0]并看到x。在这种情况下,这将是2(倍数的数字......我不知道数学词)[2,4,6,8,10,12,14,16,18,20]

我知道问题是2 * 0等于0所以arr [0] = 0.最好的方法是使第一个元素成为第二个循环。我正在考虑制作一个if语句。或使用数组方法切片数组的开头。我希望有更简单的方法来改变for循环。

1 个答案:

答案 0 :(得分:4)

有两种简单的方法可以解决这个问题

  1. 更改循环起始值

    var arr = [],
        x = 2,
        n = 10;
    for (var i = 1; i <= n; i++) {    // Start with `1`
        arr.push(x * i);
    }
    
  2. 或者,与i的下一个值相乘,

    var arr = [],
        x = 2,
        n = 10;
    for (var i = 0; i < n; i++) {
        arr.push(x * (i + 1));        // Multiply with i + 1
    }
    
  3. If you still want to solve it with array index assignment,然后在创建整个数组后用Array.prototype.slice删除第一个元素,就像这样

    var n = 10,
        arr = [],
        x = 2;
    
    for (var i = 0; i <= n; i++) {    // Note the limits, 0 to <= n
        arr[i] = x * i;
    }
    
    console.log(arr);
    // [ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 ]
    
    arr = arr.slice(1);
    
    console.log(arr);
    // [ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 ]