nivanmorgan
nivanmorgan

Reputation: 149

Iterating through an array of objects in jQuery and matching attributes

I'm trying to loop and group through this object array using jQuery using my loop value.

my jsonObj

I'd like the final object to look like this.

[ {'organization':'ABC Inc', 'address':'123 Front', 'city':'Wilmington','state':'NC','zip':'09900'}, {'organization':'Wonton Inc', 'address':'555 Front', 'city':'Jasper','state':'NC','zip':'09877'}, {'organization':'ABC Inc', 'address':'123 Front', 'city':'Wilmington','state':'NC','zip':'45345'} ]

Upvotes: 1

Views: 285

Answers (1)

kukkuz
kukkuz

Reputation: 42352

Use a hash table and #reduce() function to extract the data structure required - see demo below:

var object = [{loop:0, key: 'organization', value:'ABC Inc'}, {loop:0,key:'address',value:'123 Front'}, {loop:0, key: 'city',value:'Wilmington'},{loop:0, key:'state',value:'NC'},{loop:0, key:'zip',value:'09900'}, {loop:1,key:'organization',value:'Wonton Inc'},{ loop:1, key:'address',value:'555 Front'}, {loop:1,key:'city',value:'Jasper'},{loop:1, key:'state',value:'NC'},{loop:1, key:'zip',value:'09877'}, {loop:1, key:'organization',value:'ABC Inc'},{loop:1, key:'address',value:'123 Front'},{loop:1, key:'city',value:'Wilmington'},{loop:1, key:'state',value:'NC'},{loop:1, key:'zip',value:'45345'}];

var result = object.reduce(function(hash){
  return function(p,c) {
    if(!hash[c.loop]) {
      hash[c.loop] = {}
      p.push(hash[c.loop]);
    }
    hash[c.loop][c.key] = c.value;
    return p;
  }
}(Object.create(null)), []);

console.log(result);
.as-console-wrapper{top:0;max-height:100%!important;}

Upvotes: 1

Related Questions