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 objectslet arr = [ { first: 3, second: 4 }, { first: 3, second: 1 }, { first: 1, second: 10 }];// Apply array.sort with comparison functionarr.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 outputconsole.log("'" + JSON.stringify(arr[0]) + ", " + JSON.stringify(arr[1]) + ", " + JSON.stringify(arr[2]) + "'"); |
'{"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 objectslet arr = [ { first: 3, second: 4 }, { first: 3, second: 1 }, { first: 1, second: 10 }];// Apply array.sort with custom comparision funtionarr.sort(function (a, b) { // Compare first value then second return a.first - b.first || a.second - b.second;});// Display the outputconsole.log("'" + JSON.stringify(arr[0]) + ", " + JSON.stringify(arr[1]) + ", " + JSON.stringify(arr[2]) + "'"); |
'{"first":1,"second":10}, {"first":3,"second":1}, {"first":3,"second":4}'
