2016-06-01 10 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" } 
] 

は )(array.reduceを用いて述べたアレイにoverallLevelのカウントが必要[高:3、高度:2]のJavaScriptコード()

+1

あなたはすでにやってみたが何?あなたはどんな問題に直面していますか?一般的に、「私のためにこれを修正する」という質問はあまりうまくいかない。 – ste2425

+0

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

+0

filter()を使用してoverallLevelの値を渡すだけでフィルタリングできます。あなたはフィルタリングされた配列の項目を数えることができます。 –

答えて

5

あなたはオブジェクトでそれらを数えることができます。

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

overallLevel] || 0)+ 1; 'は評価します –

+0

ありがとう@Nina;) –

+1

@SandeepNayak' r [a.overallLevel] || 'r [a.overallLevel]'が僅かな値であれば0を代入します。それが1つ追加されます。 – ste2425

1

(あなたがことを行うにはarray.reduce()を必要としない)、これを試してみてください:

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}