在下面的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循环。
答案 0 :(得分:4)
有两种简单的方法可以解决这个问题
更改循环起始值
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 ]