本节主要说明String.prototype.localeCompare
var a = ["b1", "b21b", "b231c", "b21a"]; //
["b1", "b21a", "b21b", "b231c"]
var CompareStrings = {
db: '',
getOrderedUnicode: function(char) {
var originalUnicode = char.charCodeAt();
if (originalUnicode >= 0x4E00 && originalUnicode <= 0x9FA5) {
var index = this.db.indexOf(char);
if (index > -1) {
return index + 0x4E00;
}
}
return originalUnicode;
},
compare: function(a, b) {
if (a == b) {
return 0;
}
if (b.length == 0) {
return - 1;
}
var count = a.length > b.length ? b.length: a.length;
for (var i = 0; i < count; i++) {
var au = this.getOrderedUnicode(a[i]);
var bu = this.getOrderedUnicode(b[i]);
if (au > bu) {
return 1;
} else if (au < bu) {
return - 1;
}
}
return a.length > b.length ? 1: -1;
}
}
String.prototype.localeCompare = function(param) {
return CompareStrings.compare(this.toString(), param);
}
a.sort(function(a, b) {
return a.localeCompare(b);
});
a