2016-10-20 4 views
2

私は日付を含む次の配列を持っています。array.reduce変数をループする方法

var arrs= ["2016/10/4", "2016/10/4", "2016/10/7", "2016/10/7", "2016/10/7"]; 

ブラウザのコンソールで次のように

var maps = arrs.reduce(function(prev, cur) { 
    prev[cur] = (prev[cur] || 0) + 1; 
    return prev; 
}, {}); 
console.log(maps); 

今、カウントは、

それぞれ独自の日付がご利用されて、私は同じ日付のカウント数を取得するには、この配列を軽減していますので、私は、次のコードを使用しています
Object {2016/10/4: 2, 2016/10/7: 3} 

この縮小オブジェクトにjsonオブジェクトを作りたいと思います。

[{ 
    date : 2016/10/4, 
    value : 2 
}, 
{ 
    date : 2016/10/7, 
    value : 3 
}] 

どのように取得するには、私は長さを取得するかforEachを地図にすることができません。

答えて

2

オブジェクトを生成した後、必要な配列を生成するためにObject.keysArray#mapメソッドを使用します。

var arrs = ["2016/10/4", "2016/10/4", "2016/10/7", "2016/10/7", "2016/10/7"]; 
 

 
var maps = arrs.reduce(function(prev, cur) { 
 
    prev[cur] = (prev[cur] || 0) + 1; 
 
    return prev; 
 
}, {}); 
 

 
maps = Object.keys(maps) // get all property name 
 
    // iterate and generate eleemnt 
 
    .map(function(k) { 
 
    // generate prefered structure of array eleement 
 
    return { 
 
     date: k, 
 
     value: maps[k] 
 
    }; 
 
    }); 
 

 
console.log(maps);

+0

グレート、これは私が探していますものです。ありがとうBalan。 –

+0

@Clara:よろしくお願いします:) –

関連する問題