How to sort an array on multiple columns using JavaScript ?

The task is to sort the JavaScript array on multiple columns with the help of JavaScript. There are two approaches that are discussed below.
Approach 1: Combine the multiple sort operations by OR operator and comparing the strings. For comparing the string, we will use the localeCompare() method.
Example: This example implements the above approach. First sorting on four columns and then on the two columns.
<!DOCTYPE HTML> <html> <head> <title> How to sort an array on multiple columns using JavaScript? </title> </head> <body style="text-align:center;"> <h1>GeeksForGeeks</h1> <p id="GFG_UP"></p> <button onclick="GFG_Fun();"> Click Here </button> <p id="GFG_DOWN"></p> <script> var up = document.getElementById('GFG_UP'); var down = document.getElementById('GFG_DOWN'); var arr = [ [1, 'GFG', 2, 'Geek'], [3, 'g', 1, 'for'], [2, 'portal', 0, 'Geeks'], ]; up.innerHTML = "Click on the button to sort " + "the array on multiple columns on " + "strings.< br > [" + arr[0] + "] < br > [" + arr[1] + "] < br > [" + arr[2] + "]"; function GFG_Fun() { arr.sort(function (a, b) { return a[3].localeCompare(b[3]) || a[1].localeCompare(b[1]); }); down.innerHTML = "[" + arr[0] + "]<br>[" + arr[1] + "]<br>[" + arr[2] + "]"; } </script> </body> </html> |
Output:
Approach 2: If we sorting the elements on numbers then use the Comparison operators to compare the values. The idea is to first perform the operation on a single column and if the values are similar then move to the next column and do the same.
Example: This example implements the above approach.
First sorting on three columns and then on one column.
<!DOCTYPE HTML> <html> <head> <title> How to sort an array on multiple columns using JavaScript? </title> </head> <body style="text-align:center;"> <h1>GeeksForGeeks</h1> <p id="GFG_UP"></p> <button onclick="GFG_Fun();"> Click Here </button> <p id="GFG_DOWN"></p> <script> var up = document.getElementById('GFG_UP'); var down = document.getElementById('GFG_DOWN'); var arr = [ [1, 'GFG', 2, 'Geek'], [3, 'g', 0, 'for'], [2, 'portal', 0, 'Geeks'], ]; up.innerHTML = "Click on the button to sort " + "the array on multiple columns on " + "strings.< br > [" + arr[0] + "] < br > [" + arr[1] + "] < br > [" + arr[2] + "]"; function GFG_Fun() { arr.sort(function (a, b) { var o1 = a[2]; var o2 = b[2]; var p1 = a[0]; var p2 = b[0]; if (o1 < o2) return -1; if (o1 > o2) return 1; if (p1 < p2) return -1; if (p1 > p2) return 1; return 0; }); down.innerHTML = "[" + arr[0] + "]<br>[" + arr[1] + "]<br>[" + arr[2] + "]"; } </script> </body> </html> |
Output:




