Original |
var items = [ { "Group" : "A", "Key" : "Name", "Value" : "John" }, { "Group" : "A", "Key" : "Age", "Value" : "30" }, { "Group" : "A", "Key" : "City", "Value" : "London" }, { "Group" : "B", "Key" : "Name", "Value" : "Hans" }, { "Group" : "B", "Key" : "Age", "Value" : "35" }, { "Group" : "B", "Key" : "City", "Value" : "Berlin" }, { "Group" : "C", "Key" : "Name", "Value" : "José" }, { "Group" : "C", "Key" : "Age", "Value" : "25" }, { "Group" : "C", "Key" : "City", "Value" : "Madrid" } ], item, record, hash = {}, results = [];
// Create a "hash" object to build up for (var i = 0, len = items.length; i < len; i += 1) { item = items[i];
if (!hash[item.Group]) { hash[item.Group] = { Group : item.Group }; } hash[item.Group][item.Key] = item.Value; }
// Push each item in the hash to the array for (record in hash) { if(hash.hasOwnProperty(record)) { results.push(hash[record]); } }
|
pending… |
Alternative 2 |
var values = [ {'Group': 'A', 'Key': 'Name', 'Value': 'John'}, {'Group': 'A', 'Key': 'Age', 'Value': '30'}, {'Group': 'A', 'Key': 'City', 'Value': 'London'}, {'Group': 'B', 'Key': 'Name', 'Value': 'Hans'}, {'Group': 'B', 'Key': 'Age', 'Value': '35'}, {'Group': 'B', 'Key': 'City', 'Value': 'Berlin'}, {'Group': 'C', 'Key': 'Name', 'Value': 'José'}, {'Group': 'C', 'Key': 'Age', 'Value': '25'}, {'Group': 'C', 'Key': 'City', 'Value': 'Madrid'} ];
var map = {}; values.forEach(function(value) { var item = map[value.Group] = map[value.Group] || {Group: value.Group}; item[value.Key] = value.Value; });
var results = Object.keys(map).map(function(key) { return map[key]; });
|
pending… |
0 comments