*使用现有的test
变量并编写forEach
循环
*为每个可被3整除的数字加100。
*
*注意事项:
* - 您必须使用if
语句来验证代码是否可以被3整除
我很困惑,为什么我的代码不起作用?
var test = [12, 929, 11, 3, 199, 1000, 7, 1, 24, 37, 4,
19, 300, 3775, 299, 36, 209, 148, 169, 299,
6, 109, 20, 58, 139, 59, 3, 1, 139
];
test.forEach(function(number) {
if (number % 3 === 0) {
number += 100;
});
console.log(test[0]); **this is returning 12, NOT the desired 112**
答案 0 :(得分:4)
您没有将数字放回数组中。
原语不是参考文献。您需要使用索引并将其放回去。
test.forEach(function(number,index) {
if (number % 3 === 0) {
number += 100;
test[index] = number;
});
答案 1 :(得分:1)
您可以使用forEach()
的第三个参数编写一个不需要访问其范围的函数,就像其他一些答案一样:
arr.forEach(function callback(currentValue, index, array) { ...
let test = [12, 929, 11, 3, 199, 1000, 7, 1, 24, 37, 4,
19, 300, 3775, 299, 36, 209, 148, 169, 299,
6, 109, 20, 58, 139, 59, 3, 1, 139
]
test.forEach(function (number, index, array) {
if (number % 3 === 0) {
array[index] = number + 100
}
})
console.log(test[0])

答案 2 :(得分:0)
您需要在for-each循环中包含索引。并使用该索引更改实际数组中的值。
工作代码:
var test = [12, 929, 11, 3, 199, 1000, 7, 1, 24, 37, 4,
19, 300, 3775, 299, 36, 209, 148, 169, 299,
6, 109, 20, 58, 139, 59, 3, 1, 139
];
test.forEach(function(number, i) {
if (number % 3 === 0) {
test[i] += 100;
}
});
console.log(test[0]); //print 112
答案 3 :(得分:0)
正如其他人所说,您需要将读取数字的索引设置为值+ 100
Javascript有很多不那么直观的怪癖,而且函数参数不需要花费任何费用。查看本文以获取有关Javascript如何传递函数值/引用的更多详细信息:https://stackoverflow.com/a/6605700/1690165
答案 4 :(得分:0)
您可以使用forloop/foreach:
var test = [12, 929, 11, 3, 199, 1000, 7, 1, 24, 37, 4,
19, 300, 3775, 299, 36, 209, 148, 169, 299,
6, 109, 20, 58, 139, 59, 3, 1, 139 ];
的foreach
foreach (int i in test)
{
if (i % 3 === 0) {
i += 100;
}
}
for循环
for (i = 0; i < test.Count; i++)
{
if (test[i] % 3 === 0) {
test[i] += 100;
}
}