在下面的 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 循环。
最佳答案
有两种简单的方法可以解决这个问题
改变循环起始值
var arr = [], x = 2, n = 10; for (var i = 1; i <= n; i++) { // Start with `1` arr.push(x * i); }
或者,乘以
i
的下一个值,var arr = [], x = 2, n = 10; for (var i = 0; i < n; i++) { arr.push(x * (i + 1)); // Multiply with i + 1 }
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 ]
关于javascript - 从 for 循环内部向数组添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30473374/