2017-05-29 36 views
3

我想根據創建月份顯示用戶數量。我得到了以下數據爲例:Javascript如何根據創建月份顯示用戶數量

[ 
    { name: 'user1', created: 'may' }, 
    { name: 'user2', created: 'may' }, 
    { name: 'user3', created: 'may' }, 
    { name: 'user4', created: 'may' }, 
    { name: 'user5', created: 'june' }, 
    { name: 'user6', created: 'june' }, 
    { name: 'user7', created: 'august' }, 
    { name: 'user8', created: 'august' }, 
    { name: 'user9', created: 'august' } 
] 

我想要實現的是這樣顯示出來:

may: 4 
june: 2 
august: 3 

我怎樣才能做到這一點?

+0

你到目前爲止嘗試過什麼? ...需要純粹的JavaScript? ...還是可以使用外部庫(如JQuery)?看看https://stackoverflow.com/questions/1960473/unique-values-in-an-array尋求靈感。 – MarcM

+0

@MarcM我剛剛嘗試循環訪問數據數組,但我有點卡住,因爲我不知道如何實現這一點。純JavaScript會受到青睞。 :-)我只需要一個想法如何... – Steve

回答

4

您可以使用reduce()並返回對象作爲結果。

var data = [{"name":"user1","created":"may"},{"name":"user2","created":"may"},{"name":"user3","created":"may"},{"name":"user4","created":"may"},{"name":"user5","created":"june"},{"name":"user6","created":"june"},{"name":"user7","created":"august"},{"name":"user8","created":"august"},{"name":"user9","created":"august"}] 
 

 
var result = data.reduce(function(r, e) { 
 
    return r[e.created] = (r[e.created] || 0) + 1, r 
 
}, {}) 
 

 
console.log(result)

+0

這太棒了! :-) – Steve

0

我覺得這會給你的想法:

const usersCreatedInMay = users.filter(u => u.created == 'may') 

usersCreatedInMay將返回nullarray。只要看看它的長度就可以瞭解5月份創建了多少用戶。

usersCreatedInMay.length 

您可以遍歷所有月份並計算每月創建的用戶數量。

0

你可以嘗試的東西,去這個方向,代碼可能無法正常工作,因爲它沒有進行測試。

function extract(month, data) { 
     return let result = data.filter((res)=>{ 
     return res.created === month; 
    }) 
0

這是一個純JavaScript代碼,你可以使用: -

var monthWithUsercount = {}; 

for (var i = 0; i < a.length; i++) { 
    var num = a[i]; 
    monthWithUsercount[num.created] = monthWithUsercount[num.created] ? monthWithUsercount[num.created]+1 : 1; 
} 
//Here "a" is the array consisting months and users. 

console.log(monthWithUsercount); 

這裏是工作提琴 - https://jsfiddle.net/sajalsuraj/7nychnd2/

乾杯!

相關問題