Sort an Array of Objects by Property Using sort(fn)

By  on  

Believe it or not, there's more to JavaScript than the helper methods and classes they provide your JavaScript library. No, like seriously bro; these JavaScript-given methods do exist. One of those methods, sort, is provided to every Array instance via its prototype. I've used this method once or twice in the history of ever, bro, since I make every effort to ensure proper sort on the server side, but sometimes you may receive a JSON dump and need to sort on the client side.

Most people would assume that sort would take no method and simply sort the basic items within the array:

[1, 3, 9, 2].sort();
	// Returns: [1, 2, 3, 9]
	
[1, "a", function(){}, {}, 12, "c"].sort();
	// Returns: [1, 12, Object, "a", "c", function (){}]

But nay, broseph! If you provide a function expression to the sort method, you can sort objects within the array using simple logic. Let's say you have an array of objects representing persons and you want to sort them by age. Oh yes, it can be done, and quite easily:

[
	{ name: "Robin Van Persie", age: 28 },
	{ name: "Theo Walcott", age: 22 },
	{ name: "Bacary Sagna", age: 26  }
].sort(function(obj1, obj2) {
	// Ascending: first age less than the previous
	return obj1.age - obj2.age;
});
	// Returns:  
	// [
	//	  { name: "Theo Walcott", age: 22 },
	//	  { name: "Bacary Sagna", age: 26  },
	//	  { name: "Robin Van Persie", age: 28 }
	// ]
	

The anonymous function returns whether or not the first object's age is less than the second's, thus sorting the entire array in ascending order by age. Reverse the first and second arguments to sort in descending order.

So brochacho, now you know how to sort an array of objects using JavaScript. Get to it!

Track.js Error Reporting

Recent Features

  • Regular Expressions for the Rest of Us

    Sooner or later you'll run across a regular expression. With their cryptic syntax, confusing documentation and massive learning curve, most developers settle for copying and pasting them from StackOverflow and hoping they work. But what if you could decode regular expressions and harness their power? In...

  • CSS Animations Between Media Queries

    CSS animations are right up there with sliced bread. CSS animations are efficient because they can be hardware accelerated, they require no JavaScript overhead, and they are composed of very little CSS code. Quite often we add CSS transforms to elements via CSS during...

Incredible Demos

  • Retrieve Your Gmail Emails Using PHP and IMAP

    Grabbing emails from your Gmail account using PHP is probably easier than you think. Armed with PHP and its IMAP extension, you can retrieve emails from your Gmail account in no time! Just for fun, I'll be using the MooTools Fx.Accordion plugin...

  • Facebook Open Graph META Tags

    It's no secret that Facebook has become a major traffic driver for all types of websites.  Nowadays even large corporations steer consumers toward their Facebook pages instead of the corporate websites directly.  And of course there are Facebook "Like" and "Recommend" widgets on every website.  One...

Discussion

  1. Boger

    Nice read, never thought to sort objects this way. but man broseph and brochacho got me laugh to death :D

  2. champi

    Great ! how could I do this in PHP ?

  3. A little bit late, but it still may be useful… ;)

    In PHP, it is almost the same. Here is the equivalent code:

    $people = array(
      array('name' => 'Robin Van Persie', 'age' => 28),
      array('name' => 'Theo Walcott', 'age' => 22),
      array('name' => 'Bacary Sagna', 'age' => 26)
    );
    
    usort($people, function($a, $b) {
      return $a['age'] - $b['age'];
    });
    
    var_dump($people);
    

    More informations: http://php.net/manual/fr/function.usort.php

  4. Anil Gautam

    Hey I am tring your code but its not working.

  5. mauro

    hi, i have tryed to bud a sort function by attributes a lot really, and finally i find this blog, your code work for me if the attribute is a number not if it is a string, why? i have to do something in that case? really thank you

  6. Do Jo

    What if I wanted to sort by “name”?

  7. Fahad Rafiq

    Array sorting is very important when we deal with many array elements. We have variety of array functions which can sort arrays with respect to value as well as with respect to key. Explore the most important array sorting functions in PHP here: http://www.cloudways.com/blog/php-arrays-sorting-functions/.

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!