Search code examples
javascriptarrayssorting

Javascript sort an array of objects based on numeric key


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.


Solution

  • 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);