javascript - Split array into new array based on property occurences -


i have array of objects turn array (or array-like) object keys unique values given property (something sql group by).

fiddle:

var obj = [    {       "claimid":"111",       "drugname":"ambien cr",       "patientid":1571457415    },    {       "claimid":"222",       "drugname":"ambien cr",       "patientid":1571457415    },    {       "claimid":"333",       "drugname":"lotrel",       "patientid":1571457415    },    {       "claimid":"444",       "drugname":"methylprednisolone",       "patientid":1571457415    },    {       "claimid":"555",       "drugname":"cymbalta",       "patientid":1513895252    },    {       "claimid":"666",       "drugname":"cymbalta",       "patientid":1513895252    },    {       "claimid":"777",       "drugname":"cymbalta",       "patientid":1513895252    },    {       "claimid":"888",       "drugname":"cymbalta",       "patientid":1513895252    },    {       "claimid":"147503879tmq",       "drugname":"cymbalta",       "patientid":1513895252    },    {       "claimid":"999",       "drugname":"cymbalta",       "patientid":1513895252    } ] function splitby(data, prop) {         var returnobj = {};         var returnarray = [];         $.each(data, function (ix, val) {             if (returnobj[val[prop]] === undefined) {                 returnobj[val[prop]] = [];                 returnobj[val[prop]].push(val);             }           });         console.log(returnobj);     } splitby(obj,'patientid'); 

in fiddle can see keys of array want (the 2 unique values in patientid property) first value. understand that's because once key no longer undefined, check isn't ran, couldn't figure out quite how , close got. how can 1 iteration on collection?

i first value.

that's because push first value - when there had been no key. change the

        if (returnobj[val[prop]] === undefined) {             returnobj[val[prop]] = [];             returnobj[val[prop]].push(val);         } 

to

        if (returnobj[val[prop]] === undefined) {             returnobj[val[prop]] = [];         }         returnobj[val[prop]].push(val); 

Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -