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).
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
Post a Comment