2016-07-05 3 views
-3

私はこのJSON再グループ化のJSON配列

[ 
    { 
    "id": "03868185", 
    "month_10": 6, 
    }, 
    { 
    "id": "03870584", 
    "month_6": 2, 
    }, 
    { 
    "id": "03870584", 
    "month_7": 5, 
    }, 
    { 
    "id": "51295", 
    "month_1": 1, 
    }, 
    { 
    "id": "51295", 
    "month_10": 1, 
    }, 
    { 
    "id": "55468", 
    "month_11": 1, 
    } 
] 

を持っていると私はこのフォーマットを取得したいと思います:

[ 
    { 
    "id": "03868185", 
    "month_10": 6, 
    }, 
    { 
    "id": "03870584", 
    "month_6": 2, 
    "month_7": 5, 
    }, 
    { 
    "id": "51295", 
    "month_1": 1, 
    "month_10": 1, 
    }, 
    { 
    "id": "55468", 
    "month_11": 1, 
    } 
] 

JavaScriptでそれを処理する方法は?

+1

あなたが何かをしようとしましたか? –

+1

JavaScriptには何も組み込まれていないので、ループバックして処理する必要があります。 – epascarello

+1

「あなたはそれをそのように取得したい」と言うなら、それを再構成するためにJSONを提供してくれる人に尋ねるだけです。しかし、あなた自身もそれを再構成することができます。配列を見て、idを取得し、idがすでに配列の項目に入っているかどうかをチェックします。値があればそれを追加し、そうでなければ項目全体を追加します。 Voila。 –

答えて

0

次のように試してみてください。

var array = [ 
{ 
"id": "03868185", 
"month_10": 6, 
}, 
{ 
"id": "03870584", 
"month_6": 2, 
}, 
{ 
"id": "03870584", 
"month_7": 5, 
}, 
{ 
"id": "51295", 
"month_1": 1, 
}, 
{ 
"id": "51295", 
"month_10": 1, 
}, 
{ 
"id": "55468", 
"month_11": 1, 
} 
] 

var resultArray = array.filter(function(item) { 
var ref = this[item.id]; 
if(!ref) { 
return (this[item.id] = item); 
} 
else 
{ 
var keys = Object.keys(item); 
ref[keys[1]] = item[keys[1]]; 
} 
}, {}); 

console.log(resultArray); 

plunker:http://plnkr.co/edit/7onuPTte0Akd4ulbN8Hz?p=preview

+0

それは魅力のおかげで仲間のように動作します:) – Gobakabana

0

参考として、Array#forEachとハッシュテーブルを使用できます。

var data = [{ "id": "03868185", "month_10": 6, }, { "id": "03870584", "month_6": 2, }, { "id": "03870584", "month_7": 5, }, { "id": "51295", "month_1": 1, }, { "id": "51295", "month_10": 1, }, { "id": "55468", "month_11": 1, }], 
 
    grouped = []; 
 

 
data.forEach(function (a) { 
 
    if (!this[a.id]) { 
 
     this[a.id] = {}; 
 
     grouped.push(this[a.id]); 
 
    } 
 
    Object.keys(a).forEach(function (k) { 
 
     this[a.id][k] = a[k]; 
 
    }, this); 
 
}, Object.create(null)); 
 

 
console.log(grouped);

関連する問題