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.
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.
Share Improve this question edited Jan 7, 2014 at 8:14 n92 asked Jan 2, 2014 at 12:07 n92n92 7,60228 gold badges96 silver badges131 bronze badges 3 |4 Answers
Reset to default 10http://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.
- You can sort based on any element
- You can even reverse the order of sorting
- You can customize, how the objects have to be compared.
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
Use a sort function for example:
arry.sort(function(a,b){
return a[2] > b[2] ? 1 : -1;
});
try this
//WITH FIRST COLUMN
arry = arry.sort(function(a,b) {
return a[0] > b[0];
});
//WITH SECOND COLUMN
arry = arry.sort(function(a,b) {
return a[1] > b[1];
});
//WITH THIRD COLUMN
//and you want this code below
arry = arry.sort(function(a,b) {
return a[2] > b[2];
});
arry.sort(function (a, b) { return a[2] - b[2]; });
– Givi Commented Jan 2, 2014 at 12:12