Saturday, October 25, 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
32361 POSTS0 COMMENTS
Milvus
88 POSTS0 COMMENTS
Nango Kala
6728 POSTS0 COMMENTS
Nicole Veronica
11892 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11954 POSTS0 COMMENTS
Shaida Kate Naidoo
6852 POSTS0 COMMENTS
Ted Musemwa
7113 POSTS0 COMMENTS
Thapelo Manthata
6805 POSTS0 COMMENTS
Umr Jansen
6801 POSTS0 COMMENTS