I have an array of objects and I am trying to group them by similar property value. So lets say here is array
[
{
\"size\":\"6.5\",
\"width\":\
One simple way to do this would be to break this into several steps:
var sizeSorter = function(a, b) {return a - b};
var sizes = data.reduce(function(acc, item) {
(acc[item.size] || (acc[item.size] = [])).push(item.width);
return acc;
}, {}); //=> {8: ['M', 'W'], '6.5': ['W', 'M'], '7.5': ['W']}
Object.keys(sizes).sort(sizeSorter).map(function(size) {
return {size_new: size, width_group: sizes[size]};
});
That sorting is necessary because the keys will be sorted in Array order, with small numbers like '8' before strings like '6.5'.