2017-09-25 19 views
0

我想通过使用Array.reduce()方法来统计数组中的奇数和偶数。当我运行下面的代码时,出现“奇数未定义”的错误。我如何定义奇数以获得此代码的工作?如何使用reduce来返回Javascript中的对象?

var numbers = [5, 3, 8, 6, 9, 1, 0, 2, 2]; 
var oddEvenCounts = numbers.reduce(function(counts, number) { 
    if (number % 2 === 1) { 
    counts[odd]++ 
    } else { 
    counts[even]++; 
    } 
    return counts; 
}, {}); 
+2

使用'counts.odd'和'counts.even'代替'计数[....]'或'甚至计数[ “奇数”]'和'计数[”甚至“]' – Titus

+0

钥匙必须是字符串... – Li357

回答

4

好吧,奇数没有定义。你应该做的是把奇数/偶数加在引号(counts['odd'])或使用点符号(counts.odd)。

此外,由于奇数和偶数没有定义,递增它们将导致NaN。初始值应该是{ odd: 0, even: 0 }

var numbers = [5, 3, 8, 6, 9, 1, 0, 2, 2]; 
 
var oddEvenCounts = numbers.reduce(function(counts, number) { 
 
    if (number % 2 === 1) { 
 
    counts['odd']++; 
 
    } else { 
 
    counts['even']++; 
 
    } 
 
    return counts; 
 
}, { odd: 0, even: 0 }); 
 
    
 
console.log(oddEvenCounts);

相关问题