Thursday, September 4, 2025
HomeLanguagesJavascriptHow to sort an array of object by two fields in JavaScript...

How to sort an array of object by two fields in JavaScript ?

We have given an array of objects and the task is to sort the array of elements by 2 fields of the object. There are two methods to solve this problem which are discussed below: 

Approach 1:

  • First compare the first property, if both are unequal then sort accordingly.
  • If they are equal then do the same for the second property.

Example: This example implements the above approach with a custom comparison function. 

Javascript




// Create an array of objects
let arr = [
    { first: 3, second: 4 },
    { first: 3, second: 1 },
    { first: 1, second: 10 }
];
 
// Apply array.sort with comparison function
arr.sort(function (a, b) {
    let af = a.first;
    let bf = b.first;
    let as = a.second;
    let bs = b.second;
 
    // If first value is same
    if (af == bf) {
        return (as < bs) ? -1 : (as > bs) ? 1 : 0;
    } else {
        return (af < bf) ? -1 : 1;
    }
});
 
// Display output
console.log("'" + JSON.stringify(arr[0])
    + ", " + JSON.stringify(arr[1]) + ", "
    + JSON.stringify(arr[2]) + "'");


Output

'{"first":1,"second":10}, {"first":3,"second":1}, {"first":3,"second":4}'

Approach 2:

  • First compare the first property, If both are unequal then sort accordingly.
  • If they are equal then do the same for the second property, this example is following the same approach but uses OR Gate to reduce the code.

Example: This example implements the above approach with a custom comparison function. 

Javascript




//  Create input array of objects
let arr = [
    { first: 3, second: 4 },
    { first: 3, second: 1 },
    { first: 1, second: 10 }
];
 
// Apply array.sort with custom comparision funtion
arr.sort(function (a, b) {
     
    // Compare first value then second
    return a.first - b.first || a.second - b.second;
});
 
// Display the output
console.log("'" + JSON.stringify(arr[0])
    + ", " + JSON.stringify(arr[1]) + ", "
    + JSON.stringify(arr[2]) + "'");


Output

'{"first":1,"second":10}, {"first":3,"second":1}, {"first":3,"second":4}'
Whether you’re preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, neveropen Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we’ve already empowered, and we’re here to do the same for you. Don’t miss out – check it out now!
RELATED ARTICLES

Most Popular

Dominic
32261 POSTS0 COMMENTS
Milvus
81 POSTS0 COMMENTS
Nango Kala
6626 POSTS0 COMMENTS
Nicole Veronica
11795 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11855 POSTS0 COMMENTS
Shaida Kate Naidoo
6747 POSTS0 COMMENTS
Ted Musemwa
7023 POSTS0 COMMENTS
Thapelo Manthata
6695 POSTS0 COMMENTS
Umr Jansen
6714 POSTS0 COMMENTS