String/Numeric Comparison
HTML
<div class="output3">String array: </div>
<div class="output4">After sort: </div>
JavaScript
// Dummy arrays
var stringArr = [10,"20",null,"1","bar","-2",-3,null,5,"foo"];
// Sort arrays
$(".output3").append(stringArr.toString());
stringArr.sort(sortByDataString);
$(".output4").append(stringArr.toString());
/* http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric */
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
// String sorting function
function sortByDataString(a, b) {
if (a === null) {
return 1;
}
if (b === null) {
return -1;
}
if (isNumber(a) && isNumber(b)) {
if (parseInt(a,10) === parseInt(b,10)) {
return 0;
}
return parseInt(a,10) > parseInt(b,10) ? 1 : -1;
}
if (isNumber(a)) {
return -1;
}
if (isNumber(b)) {
return 1;
}
if (a === b) {
return 0;
}
return a > b ? 1 : -1;
}