Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从for循环内部向数组添加元素_Javascript_Arrays_For Loop - Fatal编程技术网

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

Javascript 从for循环内部向数组添加元素,javascript,arrays,for-loop,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) }

在下面的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)
var n=10;
var-arr=[];
var x=2;
对于(变量i=0;i
我希望能够执行arr[0]并看到x。在这种情况下是2(倍数的数字..我不知道数学单词)[2,4,6,8,10,12,14,16,18,20]


我知道问题是2*0等于0,所以arr[0]=0。使第一个元素成为第二个循环的最佳方法是什么。我在考虑做一个if声明。或者使用一个数组方法,将数组的开始部分切片。我希望有一种更简单的方法,比如改变for循环。

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

  • 更改循环起始值

    var arr = [],
        x = 2,
        n = 10;
    for (var i = 1; i <= n; i++) {    // Start with `1`
        arr.push(x * i);
    }
    

  • ,然后只需删除第一个元素,在创建整个数组之后,如下所示

    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 ]
    
    var n=10,
    arr=[],
    x=2;
    
    对于(var i=0;i有两种简单的方法来解决这个问题

  • 更改循环起始值

    var arr = [],
        x = 2,
        n = 10;
    for (var i = 1; i <= n; i++) {    // Start with `1`
        arr.push(x * i);
    }
    

  • ,然后只需删除第一个元素,在创建整个数组之后,如下所示

    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 ]
    
    var n=10,
    arr=[],
    x=2;
    
    对于(var i=0;我喜欢你的第一个。还没有测试第二个。我知道我可以使用arr.push(),但使用arr[i]感觉很自然我没有定义,就像你在写这个问题之前所做的那样,我对起始值进行了处理,第一个el没有定义,我想我的主要问题是我很固执地想使用arr[i]而不是push()。你能提醒我为什么推送更好,这样我以后会更倾向于使用正确的方法吗?谢谢你的帮助。@user2537537在过去,
    push
    比索引分配稍微快一点。不过,使用
    push
    的主要原因是我相信代码的可读性ve.你可能想检查和。我猜push只是将一个元素放在最后一个元素之后,然后放入一个数组中,我认为它不太关心索引。我不想成为一个负担,但如果你能告诉我如何使用arr[I](索引分配)获得解决方案那会很有帮助的。这是我开始计划解决它的方式,我想看看如果我使用索引分配,情况会变得更糟。我会接受你的答案。非常感谢。你的awesome@user2537537您可以使用
    slice
    从数组中删除第一个元素现在回答。但不要这样。我喜欢你的第一个。还没有测试第二个。我知道我可以使用arr.push()但是使用arr[i]感觉很自然我没有定义,就像你在写这个问题之前所做的那样,我对起始值进行了处理,第一个el没有定义,我想我的主要问题是我很固执地想使用arr[i]而不是push()。你能提醒我为什么推送更好,这样我以后会更倾向于使用正确的方法吗?谢谢你的帮助。@user2537537在过去,
    push
    比索引分配稍微快一点。不过,使用
    push
    的主要原因是我相信代码的可读性ve.你可能想检查和。我猜push只是将一个元素放在最后一个元素之后,然后放入一个数组中,我认为它不太关心索引。我不想成为一个负担,但如果你能告诉我如何使用arr[I](索引分配)获得解决方案那会很有帮助的。这是我开始计划解决它的方式,我想看看如果我使用索引分配,情况会变得更糟。我会接受你的答案。非常感谢。你的awesome@user2537537您可以使用
    slice
    从数组中删除第一个元素现在就回答,但不要这样。