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