我尝试开发一个简单的程序,打印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);
答案 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
结束。
如果您注意到循环后的输出,则表示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;
}
更好的方式来写这个
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;
第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()