2017-09-25 2 views
0

Ich versuche, die Anzahl von ungeraden und geraden Zahlen in einer Reihe zu zählen, indem die Array.reduce() Methode verwendet. Wenn ich den folgenden Code ausführe, bekomme ich den Fehler "Odd ist nicht definiert." Wie/wo definiere ich ungerade, damit dieser Code funktioniert?Wie reduziere ich, um ein Objekt in Javascript zurückzugeben?

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

Verwendung 'counts.odd' und' counts.even' statt 'zählt [....]' oder sogar 'zählt [ "ungerade"]' und 'zählt [“ sogar "]' – Titus

+0

Keys haben Strings sein ... – Li357

Antwort

4

Nun, ungerade ist nicht definiert. Was Sie tun sollten, ist entweder setzen ungerade/gerade in Anführungszeichen (counts['odd']) oder Punktnotation verwenden (counts.odd).

Da auch ungerade und gerade nicht definiert sind, erhöht wird sie in NaN führen würde. Der Anfangswert sollte stattdessen { odd: 0, even: 0 } sein.

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);

Verwandte Themen