将项目推送到数组并在javascript中返回它们

时间:2013-12-29 03:13:57

标签: javascript arrays for-loop

我正在尝试获取一个数字数组并记录哪些数字是模数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;
};

1 个答案:

答案 0 :(得分:2)

您的代码存在的问题是,您可以将新值推送到total2这样的

total2.push(num[i]);

但您可以使用Array.filterArray.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 ]