I have an array of objects that looks like this:
var data = [
{
title: 'Shirt',
position: 3
},
{
title: 'Ball',
position: 1,
}
]
How could I sort it for use in a for loop
like this.
for(var i in data) {
}
I tried:
for(var i in data | orderBy:'position')
But that is angular so normal Javascript it doesn't work.
I'm thinking their must be some way to sort the array before looping through it, or adding a filter to the loop, not sure which is the best way.
But that is angular so normal Javascript it doesn't work.
Simply you can use JavaScript sort function. It will work in Angular(TypeScript) also.
Note: When sorting numbers, you can simply use the compact comparison:
myArray.sort((n1,n2) => n1 - n2);
var data = [
{
title: 'Shirt',
position: 3
},
{
title: 'Ball',
position: 1,
}
];
data.sort(function(a, b) {
return a.position- b.position;
})
console.log(data);
Use Array.prototype.sort
(doc) and pass the compare function as you want:
var data = [
{
title: 'Shirt',
position: 3
},
{
title: 'Ball',
position: 1,
},
// add for actually seeing the correct result
{
title: 'Cake',
position: 2,
}
];
function compareFunction(a,b){
if(a.position > b.position)
return 1;
else
return -1;
}
data.sort(compareFunction);
console.log(data);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With