I have an array of objects like this:
obj = [{'name': 'Tom', 'age': 17, 'gender': 'male', 'color':'red', 'position':3},
{'name': 'Sam', 'age': 19, 'gender': 'male', 'color':'red', 'position':2},
{'name': 'Harry', 'age': 16, 'gender': 'male', 'color':'red', 'position':1},
{'name': 'Charles', 'age': 19, 'gender': 'male', 'color':'blue', 'position':2},
{'name': 'Fred', 'age': 21, 'gender': 'male', 'color':'blue', 'position':3},
{'name': 'Mike', 'age': 23, 'gender': 'male', 'color':'blue', 'position':1}]
What I wish to achieve is, sort the array of objects in ascending order by position for all the objects with a similar color. My expected output is this:
obj = [{'name': 'Harry', 'age': 16, 'gender': 'male', 'color':'red', 'position':1},
{'name': 'Sam', 'age': 19, 'gender': 'male', 'color':'red', 'position':2},
{'name': 'Tom', 'age': 17, 'gender': 'male', 'color':'red', 'position':3},
{'name': 'Mike', 'age': 23, 'gender': 'male', 'color':'blue', 'position':1}
{'name': 'Charles', 'age': 19, 'gender': 'male', 'color':'blue', 'position':2},
{'name': 'Fred', 'age': 21, 'gender': 'male', 'color':'blue', 'position':3}]
My approach: I have the set of unique colors like this:
unique_colors = ['red', 'blue'];
for (var i in unique_colors){
obj.forEach(function(x){
if (i === x.colors){
obj.sort((a,b) => a.position - b.position);
}
}
});
But that didn't work. Please assist me where I am going wrong. Thanks a lot in advance. Sorry if its trivial, am still learning javascript.