How to Sort an Array of Objects Based on a Specific Property in JavaScript

Programming languages or concepts

 How to Sort an Array of Objects Based on a Specific Property in JavaScript


Sorting an array of objects is a common task in JavaScript programming. It becomes even more useful when you need to sort the objects based on a specific property. JavaScript provides several built-in methods that allow you to accomplish this task efficiently. In this article, we will explore different approaches to sorting an array of objects based on a specific property in JavaScript.


1. The `sort()` Method with Comparison Function:

The most straightforward way to sort an array of objects based on a specific property is by using the `sort()` method. The `sort()` method arranges the elements of an array in place and expects a comparison function as an argument.


Here's an example to illustrate how to sort an array of objects based on a specific property:



const people = [

  { name: "John", age: 25 },

  { name: "Jane", age: 30 },

  { name: "Bob", age: 20 }

];


people.sort((a, b) => a.age - b.age);


console.log(people);



In this example, we have an array of `people` objects with `name` and `age` properties. We pass a comparison function to the `sort()` method that compares the `age` property of each object. The comparison function subtracts `a.age` from `b.age`, which determines the sorting order. The resulting sorted array is then logged to the console.


2. Sorting in Descending Order:

By modifying the comparison function slightly, you can sort the array of objects in descending order based on the specified property. Here's an example:



const people = [

  { name: "John", age: 25 },

  { name: "Jane", age: 30 },

  { name: "Bob", age: 20 }

];


people.sort((a, b) => b.age - a.age);


console.log(people);



In this case, the `b.age - a.age` comparison reverses the sorting order, resulting in the array being sorted in descending order based on the `age` property.


3. Sorting with Non-Numeric Properties:

If the property you want to sort by is not numeric, you can use the `localeCompare()` method to compare strings. Here's an example:



const fruits = [

  { name: "Apple", color: "Red" },

  { name: "Banana", color: "Yellow" },

  { name: "Orange", color: "Orange" }

];


fruits.sort((a, b) => a.name.localeCompare(b.name));


console.log(fruits);



In this example, we have an array of `fruits` objects with `name` and `color` properties. The `localeCompare()` method compares the `name` property of each object and returns a negative, zero, or positive value based on the sorting order. The resulting sorted array is then logged to the console.


4. Sorting with Multiple Properties:

Sometimes, you may need to sort objects based on multiple properties. In such cases, you can extend the comparison function to handle multiple conditions. Here's an example:



const products = [

  { name: "Chair", category: "Furniture", price: 50 },

  { name: "Table", category: "Furniture", price: 100 },

  { name: "Bookshelf", category: "Furniture", price: 80 },

  { name: "Pen", category: "Stationery", price: 1 }

];


products.sort((a, b) => {

  if (a.category !== b.category) {

    return a.category.localeCompare(b.category);

  } else {

    return a.price - b.price;

  }

});


console.log(products);



In this example, we have an array of `products` objects with `name`, `category`, and `price` properties. The comparison function first checks if the `category` properties are different. If they are, it uses `localeCompare()` to sort the objects based on the `category` property. If the `category` properties are the same, it falls back to comparing the `price` properties using the subtraction method.


This allows you to sort the `products` array first by category and then by price within each category.


By using these techniques, you can easily sort an array of objects based on a specific property or multiple properties in JavaScript. The `sort()` method with a comparison function provides great flexibility and allows you to customize the sorting behavior to suit your needs.

close