我正在尝试获取一个数字数组并记录哪些数字是模数2,余数为0 i % 2 === 0
。对于模数为2且余数为1 i % 2 === 1
的数字,我想将这些数字推送到数组(似乎最适合记录一组数字)。
从那里我将返回%2 === 0
数字的sumTotal并打印数组中的哪些数字为%2 === 1
。
下面的问题适用于if statement
但是当我添加到else if
时,我无法弄清楚如何在else if语句中将项目推送到数组中。
var numSet = [1, 4, 6, 450, 5, 222, 397, 962, 678, 222, 459];
var myFunc = function (num) {
var total = 0;
var total2 = [];
for (var i = 0; i < num.length; i += 1) {
if (num[i] % 2 === 0) {
total += num[i];
} else if (num[i] % 2 === 1) {
total2[num[i]] = num[i].push;
console.log(total2);
}
}
return 'The total is ' + total + ' and the remainder is ' + total2;
};
答案 0 :(得分:2)
您的代码存在的问题是,您可以将新值推送到total2
这样的
total2.push(num[i]);
但您可以使用Array.filter
和Array.reduce
,就像这样
var numSet = [1, 4, 6, 450, 5, 222, 397, 962, 678, 222, 459];
var oddNumbers = numSet.filter(function(currentNumber) {
return currentNumber % 2 === 1;
});
var total = numSet.reduce(function (total, currentNumber) {
if (currentNumber % 2 === 0) {
total += currentNumber;
}
return total;
}, 0);
console.log(total, oddNumbers);
<强>输出强>
2544 [ 1, 5, 397, 459 ]