我试图替换数组中的每个第三个元素,但我的代码不起作用。
//Calling of the first array
//first array
var numbers = new Array();
var go = true;
while (go) {
var n = parseFloat(prompt("Number please", ""));
numbers.push(n);
go = confirm("One more number?");
}
document.write("<p>" + numbers.toString() + "</p>");
// Array to change elements
// second array
for (var i = 0; i < numbers.length; i++)
if (numbers[i] % 3 == 0) {
(numbers *= 2);
}
else {
(numbers *= 1);
}
document.write("<p>" + numbers.toString() + "</p>");
//document.write("<p>");
&#13;
答案 0 :(得分:2)
将numbers[i] % 3
更改为i % 3
。您目前正在测试数组中的数字是否为3的倍数,而不是它在数组中的位置是3的倍数。
您还需要更改numbers *= 2
之类的语句。 numbers
是一个数组,所以乘以它不会很好。如果要更新应为numbers[i] *= 2;
答案 1 :(得分:1)
您错过了(numbers[i] *= 2)
和(numbers[i] *= 1);
要检查第三个元素,您需要检查索引(i+1)%3 == 0
,因为您的数组从索引0开始;
答案 2 :(得分:1)
您的代码中有2个错误:
numbers[i] % 3 == 0
:这意味着如果任何数字的块为3的倍数,而不是第3个索引的每个数字,则执行
解决方案:(i + 1) % 3 == 0
numbers *= 2
:您正在尝试将数组与数组元素相乘。您将获得 NaN 。numbers[i] *= 2;
然而,这是另一种使用map的方法:
numbers = numbers.map(function (i, idx) {
return (idx + 1) % 3 == 0 ? 2*i : i
})
这是一个地图功能的文档: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map?v=example
答案 3 :(得分:0)
你想检查索引,我想不是数字值。
在for循环而不是
number[i] % 3
使用
i % 3
答案 4 :(得分:0)
您使用numbers[i]
,即实际数字而不是索引。因此,将if(number[i]%3==0)
替换为if(i%3==0)
。
其次,在if else条件下更新整个数组而不是数组元素。因此,请使用numbers[i] *=2
代替number *= 2
。
使用以下代码段更改数组:
for (var i = 1; i <= numbers.length; i++)
if (i % 3 == 0) {
numbers[i] *= 2;
}
else {
numbers[i] *= 1;
}
}
答案 5 :(得分:0)
你的逻辑错了。而不是采用值的模数,你应该采用指数的模数。相反,if (numbers[i] % 3 == 0)
这个你应该做的是if (i % 3 == 0)
。希望这会有所帮助。
答案 6 :(得分:0)
您可以稍微更改整个程序,而不使用 go 的其他变量。
正如在提到的评论中,您可以使用步长3进行迭代,并使用余数运算符%
省略检查。
对数组元素的赋值,需要引用带有变量名和左侧索引的数组,以及赋值运算符和用于获取所需结果的表达式。
numbers[i] *= 2;
var n,
i,
numbers = [];
do {
n = parseFloat(prompt("Number please"));
numbers.push(n);
} while (confirm("One more number?"))
console.log(numbers);
for (i = 0; i < numbers.length; i += 3) {
numbers[i] *= 2;
}
console.log(numbers);
答案 7 :(得分:-1)
您可以使用数学模数运算符。每三分之一意味着%3。
https://www.w3schools.com/js/js_arithmetic.asp
如果在条件中使用它,则索引%3将在true时返回0。
if (index % 3 == 0)