Javascript用forEach中的if语句更改变量

时间:2017-08-17 03:56:13

标签: javascript loops foreach nested-if

*使用现有的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**

5 个答案:

答案 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;
     }
}