2017-07-24 18 views
0

我有一個對象陣列是這樣的:如何根據數據的值將數組對象轉換/過濾爲新的json對象?

[{id: 1, name: 'foo', sport: 'soccer'}, 
{id: 2, name: 'bar', sport: 'basketball'}, 
{id: 3, name: 'acme', sport: 'basketball'}, 
{id: 4, name: 'xyz', sport: 'baseball'}] 

我怎樣才能變換這個陣列的對象到由運動值濾波的新javascript對象?事情是這樣的:

{ 
    soccer: [{id: 1, name: 'foo'}], 
    basketball: [{id: 2, name: 'bar'},{id: 3, name: 'acme'}], 
    baseball: [{id: 4, name: 'xyz'}] 
} 
+0

您是否嘗試過什麼了嗎? – kaveh

+0

我用.map試過但沒有成功! :( –

回答

0

試試這個:

var test = [{id: 1, name: 'foo', sport: 'soccer'}, 
{id: 2, name: 'bar', sport: 'basketball'}, 
{id: 3, name: 'acme', sport: 'basketball'}, 
{id: 4, name: 'xyz', sport: 'baseball'}]; 

test.reduce(function(aggregator, item) { 

    if(!aggregator[item.sport]) { 
     aggregator[item.sport] = []; 
    } 

    aggregator[item.sport].push({id: item.id, name: item.name}) 

    return aggregator; 

}, {}); 
+0

太棒了!它的作品就像一個魅力,謝謝。 –