2016-09-10 7 views
1

以下の形式のJSON経由でサーバーからオブジェクトを取得しています。私は別の形式にそれを並べ替えたいです。Javascript/JqueryでJSON構造を変更する

{ 
    visits: [{ 
     week: 1, 
     count: 3 
    }, { 
     week: 2, 
     count: 3 
    }, { 
     week: 3, 
     count: 4 
    }, { 
     week: 4, 
     count: 3 
    }, { 
     week: 5, 
     count: 1 
    }], 
    visitors: [{ 
     week: 1, 
     count: 3 
    }, { 
     week: 2, 
     count: 3 
    }, { 
     week: 3, 
     count: 4 
    }, { 
     week: 4, 
     count: 3 
    }, { 
     week: 5, 
     count: 1 
    }] 
} 

私は、その構造を変更し、以下、このフォーマットを行いたい場合:

{ 
    week1: { 
     visits: 3 
     visitors: 1 
    } 
    week2: { 
     visits: 3 
     visitors: 3 
    } 
    week3: { 
     visits: 4 
     visitors: 4 
    } 
    week4: { 
     visits: 3 
     visitors: 3 
    } 
    week5: { 
     visits: 4 
     visitors: 4 
    } 
} 
+0

***あなたは***試してみましたか?共有するコードはありますか? –

+0

これはJSONではないので、データをJSONとして取得しても、問題とは無関係です。 –

答えて

0

ので、GROUPBYの機能を使用します。次に

var groupBy=function(jsonArray,key) { 
     return jsonArray.reduce(function(rv, x) { 
     (rv[x[key]] = rv[x[key]] || []).push(x); 
     return rv; 
     }, {}); 
    }; 

を:

var groupedByWeeks=groupBy(yourJsonArray.visits,'week') 

[マップオブジェクト1->week1、.. n->weekn

Object.keys(groupedByWeeks).map((k)=> 
    groupedByWeeks['week'+k]=groupedByWeeks[k]; 
) 
1

これを試してみてください。

var newObj = {} 

$.each(a.visits, function(key,obj){ newObj['week'+obj.week] ={visits: obj.count} }); 

$.each(a.visitors, function(key,obj){ newObj['week'+obj.week].visitors = obj.count}); 
関連する問題