Sunday, 15 May 2011

javascript - Reorder a JSON collection -



javascript - Reorder a JSON collection -

i have json array fetch server looks :

[ {name: "web design", id: "27", month_n: "1", data: "68.00"}, {name: "web design", id: "27", month_n: "2", data: "56.00"} , {name: "homework", id: "4", month_n: "2", data: "15.00"} , {name: "gaming", id: "12", month_n: "2", data: "5.00"} ]

on client side, want reorder have similar :

[{name: "web design", data:[68.00,56.00]}, {name:"homework", data:[0,15]} , on...

where "data" value grouped "id" number , month number (by default 0 if there's no month match).

what's best way ? tried pure javascript way i'm getting hard time ! have heard easier underscore js. don't know start.

will please enlighten me ?

one way in vanilla javascript, utilize helper object in next code.

in first step, identify distinct name values , grouping data field them. in sec step, helper object converted array.

var arr = [ {name: "web design", id: "27", month_n: "1", data: "68.00"}, {name: "web design", id: "27", month_n: "2", data: "56.00"} , {name: "homework", id: "4", month_n: "2", data: "15.00"} , {name: "gaming", id: "12", month_n: "2", data: "5.00"} ]; // utilize helper object identify distinct "names" var helper = {}; for( var i=arr.length; i--; ) { // init array, if not there helper[ arr[i]['name'] ] = helper[ arr[i]['name'] ] || []; // add together newest element helper[ arr[i]['name'] ].push( helper[ arr[i]['data'] ] ); } // convert array var newarr = []; for( var key in helper ) { if( helper.hasownproperty( key ) ) { newarr.push( { 'name': key, 'data': helper[key] } ); } }

javascript json web-applications underscore.js

No comments:

Post a Comment