2016-06-01 8 views
2
var developers = [ 
    { name: "Joe", age: 23 ,overallLevel: "high"}, 
    { name: "Sue", age: 28 ,overallLevel: "advanced" }, 
    { name: "Jon", age: 32 ,overallLevel: "high" }, 
    { name: "Bob", age: 24 ,overallLevel: "high" }, 
    { name: "Bob", age: 20 ,overallLevel: "advanced" } 
] 

von overallLevel in dem genannten Array array.reduce zählen Benötigen() [high: 3, Fortgeschrittene: 2]JavaScript-Code Zählung des Auftretens von Objekten in Array von Objekten erhalten array.reduce mit()

+1

Was haben Sie schon versucht? Mit welchen Problemen haben Sie konfrontiert? Im Allgemeinen "Fix this for me" Fragen gehen nicht zu gut. – ste2425

+0

https://jsfiddle.net/rdw26c3k/ – adeneo

+0

Sie könnten filter() verwenden und einfach den Wert von overallLevel zur Filterung übergeben. Dann könnten Sie nur Elemente im gefilterten Array zählen. –

Antwort

5

Sie könnten sie nur mit einem Objekt zählen.

var developers = [{ name: "Joe", age: 23, overallLevel: "high" }, { name: "Sue", age: 28, overallLevel: "advanced" }, { name: "Jon", age: 32, overallLevel: "high" }, { name: "Bob", age: 24, overallLevel: "high" }, { name: "Bob", age: 20, overallLevel: "advanced" }], 
 
    overallLevel = developers.reduce(function (r, a) { 
 
     r[a.overallLevel] = (r[a.overallLevel] || 0) + 1; 
 
     return r; 
 
    }, {}); 
 

 
console.log(overallLevel);

+0

Können Sie uns sagen, wie '(r [a. overallLevel] || 0) + 1; 'wird ausgewertet –

+0

Danke @Nina;) –

+1

@SandeepNayak' r [a.overallLevel] || 0 'wird Null zuweisen, sollte' r [a.overallLevel] 'ein fieser Wert sein. Es fügt dann eins hinzu. – ste2425

1

Versuchen Sie, diese (Sie brauchen keine array.reduce() zu tun, dass):

var 
 
    i, 
 
    count = {high: 0, advanced: 0}, 
 
    developers = [ 
 
    { name: "Joe", age: 23 ,overallLevel: "high"}, 
 
    { name: "Sue", age: 28 ,overallLevel: "advanced" }, 
 
    { name: "Jon", age: 32 ,overallLevel: "high" }, 
 
    { name: "Bob", age: 24 ,overallLevel: "high" }, 
 
    { name: "Bob", age: 20 ,overallLevel: "advanced" } 
 
    ]; 
 

 
for (i in developers) { 
 

 
    count[developers[i].overallLevel]++; 
 
} 
 

 
alert(JSON.stringify(count)); // Object { high=3, advanced=2}