Back to JavaScript
2026-04-135 min read

JavaScript Program to Sort Array of Objects by Property Values

Learn JavaScript Program to Sort Array of Objects by Property Values step by step with clear examples and exercises.

Why This Matters

Sorting an array of objects based on property values is essential for any JavaScript developer as it provides numerous benefits, such as:

  • Organizing data efficiently in various scenarios like sorting students by their scores or managing complex datasets.
  • Demonstrating problem-solving skills and understanding of JavaScript during interviews.
  • Enhancing the readability and maintainability of your code by presenting data in a well-structured format.

Importance of Sorting Arrays of Objects

Sorting arrays of objects can be crucial in various scenarios such as:

  1. Data Organization: Sorting an array of student objects based on their scores, ages, or names helps manage and analyze data more effectively.
  2. Interview Preparation: Being able to efficiently sort an array of objects demonstrates your problem-solving skills and understanding of JavaScript during interviews.
  3. Code Readability: Presenting data in a well-structured format enhances the readability and maintainability of your code, making it easier for other developers to understand and collaborate on your projects.

Prerequisites

To follow this tutorial, you should have a good understanding of the following topics:

  1. JavaScript basics, including variables, arrays, and objects.
  2. Control structures like loops and conditional statements.
  3. Array methods such as map(), filter(), and reduce().
  4. ES6 arrow functions.
  5. Basic understanding of the sort() method (although we will cover it in detail here).

Core Concept

To sort an array of objects by a specific property value, we'll use the built-in JavaScript sort() method. However, by default, sort() compares strings, so we need to provide a custom comparison function that suits our needs.

Understanding the sort() Method

The sort() method sorts the elements of an array in place and returns the array. By default, it compares the string representation of each element, which may not be suitable for arrays of objects. To overcome this limitation, we need to provide a custom comparison function that can compare properties of our objects effectively.

Creating a Custom Comparison Function

The custom comparison function takes two arguments (a and b) representing the objects being compared. This function should return a negative value if a should sort before b, zero if they are equal, or a positive value otherwise.

Here's an example of sorting an array of student objects based on their names:

let students = [
{name: "Alice", age: 20},
{name: "Bob", age: 25},
{name: "Charlie", age: 19}
];

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

console.log(students); // Output: [ { name: 'Charlie', age: 19 }, { name: 'Alice', age: 20 }, { name: 'Bob', age: 25 } ]

In this example, we've defined an array of student objects and used the sort() method to sort them alphabetically by their names. The custom comparison function (a, b) => a.name.localeCompare(b.name) compares the names of two objects (a and b) using the localeCompare() method, which takes into account the current locale's rules for string comparison.

Worked Example

Let's consider an array of objects representing products with properties for name, price, and quantity:

let products = [
{name: "Laptop", price: 1000, qty: 5},
{name: "Mouse", price: 20, qty: 10},
{name: "Keyboard", price: 50, qty: 2}
];

// Sort products by price in ascending order
products.sort((a, b) => a.price - b.price);

console.log(products); // Output: [ { name: 'Mouse', price: 20, qty: 10 }, { name: 'Keyboard', price: 50, qty: 2 }, { name: 'Laptop', price: 1000, qty: 5 } ]

In this example, we've sorted the products by their prices in ascending order. The custom comparison function (a, b) => a.price - b.price subtracts the price of one product from another to determine the sorting order.

Common Mistakes

  1. Not providing a custom comparison function: If you don't provide a custom comparison function when using the sort() method, it will default to converting objects to strings and comparing them lexicographically, which may not give the desired results.
  1. Incorrect comparison logic: Ensure that your comparison function correctly sorts the array based on the desired property values. For example, if you want to sort in descending order, use b.price - a.price instead of a.price - b.price.
  1. Mutating original data: Be careful not to modify the original data within the comparison function, as it can lead to unexpected results when sorting. If you need to maintain references to the original objects, create a new array and perform the sort on that instead.

Common Mistake - Mutating Original Data

To avoid mutating the original data, you can create a copy of the array before sorting it:

let products = [ /* ... */ ];
let sortedProducts = [...products].sort((a, b) => a.price - b.price);
console.log(sortedProducts); // Sorted array without modifying the original data

Practice Questions

  1. Write a JavaScript program to sort an array of student objects by their ages in ascending order.
  1. Given an array of product objects with properties for name, price, and quantity, write a function that sorts them by price in descending order and then by quantity in ascending order.

FAQ

  1. Why can't I just use the comparison operator (<) to sort my array of objects?
  • Using the comparison operator only works for primitive data types like numbers, strings, and booleans. When dealing with complex data structures like arrays or objects, you need to provide a custom comparison function to sort them correctly.
  1. What happens if I don't specify a comparison function when using sort()?
  • If no comparison function is provided, the sort() method will convert the objects to strings and compare them lexicographically, which may not give the desired results.
  1. Can I use ES6 arrow functions with the sort() method?
  • Yes, you can use ES6 arrow functions for the comparison function when using the sort() method in JavaScript. The syntax is similar to regular functions, but with a shorter syntax using an arrow (=>).
JavaScript Program to Sort Array of Objects by Property Values | JavaScript | XQA Learn