I have an array as follows
var arry = [ [1, "Convention Hall", "Mumbai", 10, "XYZ Company"],
[2, "Auditorium", "Delhi", 10, "ABC Company"],
[3, "CenterHall", "Bangalore", 10, "ZZZ Company"],
....
]
I want to sort the array alphabetically based on the third item of array i.e arry[n][2]
How to do this.
http://jsfiddle.net/VPrAr/
You can use the arry.sort()
. The default is alphanumeric and ascending.
So it would be:
var arry = [ [1, "Convention Hall", "Dangalore", 10, "XYZ Company"],
[2, "Auditorium", "Belhi", 10, "ABC Company"],
[3, "CenterHall", "Aumbai", 10, "ZZZ Company"],
];
var x =arry.sort(function(a,b){ return a[2] > b[2] ? 1 : -1; });
alert(x);
Array.prototype.sort
function expects a function as a parameter, which accepts two parameters and returns any of -1, 0 or 1
.
I am a very big fan of functional programming, so I came up with this. This offers flexibility.
function basicComparator(first, second) {
if (first === second) {
return 0;
} else if (first < second) {
return -1;
} else {
return 1;
}
}
function compareNthElements(n, comparatorFunction, reverse) {
return function(first, second) {
if (reverse === true) {
return comparatorFunction(second[n], first[n]);
} else {
return comparatorFunction(first[n], second[n]);
}
}
}
Thats it. Now, call the sort
function like this
arry.sort(compareNthElements(1, basicComparator, true)); // Sorts first field and in reverse
arry.sort(compareNthElements(2, basicComparator)); // Sorts second field
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With