javascript中的数组循环

时间:2016-12-23 07:00:14

标签: javascript arrays for-loop

我尝试开发一个简单的程序,打印1到100之间的所有数字,除以3而没有任何残差,并计算总和

我用for循环做了:

var sum = 0;
for (var i = 3; i <= 100; i = i + 3) {
    document.write("<br/>" + i);
    sum = sum + i;
}
document.write("<br/>sum = " + sum); //1683

但是当我想用数组做的时候我失败了:

var numbers = [];
var sum = 0;
for (var i = 0; i <= 100; i = i + 3) {
    numbers[i - 1] = i;
}

for (var index = 0; index < 100; index++) {
    document.write("<br/>" + numbers[index]);
    sum = sum + i;
}

document.write("<br/>sum = " + sum);

7 个答案:

答案 0 :(得分:2)

像这样使用,

数组索引应该从0开始,这就是我引入另一个变量j = 0

的原因
var numbers = [];
var sum = 0;
for (var i = 0, j = 0; i <= 100; i = i + 3, ++j) {
    numbers[j] = i;
}

<强>更新

第一期: 在你的代码中,即。低于你的代码,

for (var i = 0; i <= 100; i = i + 3) {
    numbers[i - 1] = i;
}

在第一次迭代中,

i = 0;
numbers[0-1] = i // i.e numbers[-1] = 0; 

在你的第二个循环中,你从0开始索引

for (var index = 0; index < 100; index++) {

第二期:

此外,如果您没有使用顺序计数器来填充数组,那么您将以未填写的值undefined结束。

enter image description here

如果您注意到循环后的输出,则表示numbers.length = 99错误,其中不会包含那么多项。

第三期:

在下面的代码中,即使您引入了顺序计数器,这仍然是错误的

for (var i = 0; i <= 100; i = i + 3) {
    numbers[i - 1] = i;
}

因为i应该以3而不是0开头,否则你最终会得到34个元素,因为numbers[0]将为0;

第四期:

在此代码中,

for (var index = 0; index < 100; index++) {
    document.write("<br/>" + numbers[index]);
    sum = sum + i;
}

你实际上不必将它循环到100,你已经填充了数字数组,所以你只需要使用numbers.length,就像这样

var len = numbers.length;
for (var index = 0; index < len; index++) {
    document.write("<br/>" + numbers[index]);
    sum = sum + i;
}

更好的方式来写这个

&#13;
&#13;
var numbers = [];
for (var i = 3, j=0; i <= 100; i = i + 3, j++) {
    numbers[j] = i;
}

var sum = numbers.reduce((a, b) => a+b);
console.log(sum);
&#13;
&#13;
&#13;

var sum = numbers.reduce((a, b) => a+b);行使用Array.reduce()方法。

答案 1 :(得分:1)

为数组添加数字

var numbers = [];
for(var i = 3; i <= 100; i = i +3){
  numbers.push(i);
}

求和和打印值

var sum = 0;
for (var i = 0; i < numbers.length; i++) {
    document.write("<br/>" + numbers[i]);
    sum = sum + numbers[i];
}
document.write("<br/>sum = " + sum); //1683

答案 2 :(得分:1)

您的代码中存在一些问题。

for (var i = 0; i <= 100; i = i + 3) {
    numbers[i - 1] = i;
}

1:数组基于0。所以首先插入阵列就可以进行折腾。

2:创建的数字数组将跳过索引,如3,6,9

for (var index = 0; index < 100; index++) {
    document.write("<br/>" + numbers[index]);
    sum = sum + i;
}

3:在这里你将索引迭代到100,你应该迭代它直到数字数组的长度。

当索引为1,2时 number [index]将变为未定义。

4:sum = sum + i(i ??????)

你应该尝试这样,或者你也可以使用push()

var numbers = [];
var sum = 0;
for (var i = 0,j=0; i <= 100; i = i + 3, j= j+1) {
    numbers[j] = i; // array is 0 based.
  
}



for (var index = 0; index < numbers.length; index++) {
    document.write("<br/>" + numbers[index]);
    sum = sum + numbers[index];
}

document.write("<br/>sum = " + sum);

答案 3 :(得分:0)

数组中的索引从零开始。

for (var i = 0; i <= 100; i = i + 3) {
    numbers[i - 1] = i; // In the first iteration, there will be numbers[-1] = i;
}

答案 4 :(得分:0)

我想你有几个问题。

var numbers = [];
var sum = 0;
for (var i = 0; i <= 100; i = i + 3) {
    numbers.push(i);
}

for (var index = 0; index < numbers.length; index++) {
    document.write("<br/>" + numbers[index]);
    sum = sum + i;
}

document.write("<br/>sum = " + sum);

对于阵列,您可以使用:

for (var i in array) {
console.log(array[i]);
}

我很确定,如果其中没有其他信息,那么数字序列数组绝对没用。

答案 5 :(得分:0)

试试这个

var numbers = [];
var sum = 0;
for (var i = 0; i <= 100; i = i + 3) {
    numbers[(i-3)/3] = i;
}

for (var index = 0; index <  numbers.length; index++) {
    document.write("<br/>" + numbers[index]);
    sum = sum + numbers[index];
}

document.write("<br/>sum = " + sum);

这是我试过的小提琴 https://jsfiddle.net/4ncgnd7c/

答案 6 :(得分:0)

这应该使用单循环

new_x = np.linspace(x[0],x[-1],100*len(x)) # new_x has 100x more points than x
new_y = np.interp(new_x,x,y)
new_w = np.interp(new_x,x,widths)

points = np.array([new_x, new_y]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)
lc = LineCollection(segments, linewidths=new_w,color='blue')
fig,a = plt.subplots()
a.add_collection(lc)
a.set_xlim(0,7)
a.set_ylim(0,25)
fig.show()