我有一个按名字排序的数组,但是如何按第一个姓氏和第二个姓氏排序。
你能帮帮我吗?
x=100
var miArray = [["john", "doe", "man"],
["doe", "man", "john"],
["man", "john"],
["ferrer", "hunt", "doe"],
["hunt", "ferrer", "Blanch"],
["fontar", "gonza", "ferrer"],
["gonza", "lopo", "fontar"],
["lopo", "fontar", "gonza"],
["mortar", "fanta", "lopo"],
["fanta", "mortar"],
["cola", "fanta"]];
document.write("Ordered by name<br><br>");
miArray.sort();
document.write("["+miArray.join("]-[")+"]<br/>");发布于 2015-01-19 00:18:37
您可以使用提供自定义函数的sort对数组进行排序:
var miArray = [["john", "doe", "man"],
["doe", "man", "john"],
["man", "john"],
["ferrer", "hunt", "doe"],
["hunt", "ferrer", "Blanch"],
["fontar", "gonza", "ferrer"],
["gonza", "lopo", "fontar"],
["lopo", "fontar", "gonza"],
["mortar", "fanta", "lopo"],
["fanta", "mortar"],
["cola", "fanta"]];
function compare(a, b) {
if (a[0] > b[0]) {// bigger
return 1;
}
if (a[0] < b[0]) {// smaller
return -1;
}
return 0;// equal
}
function compareArray(a,b) {// Order by name, if names are equal by first surname, if first surname is equal, then by second surname.
var res = 0;
res= compare(a[0],b[0]);
if( res === 0 ) { // First name is equal
res = compare(a[1],b[1]);
if( res === 0 ) { // Second Name is equal
return compare(a[2],b[2]);// Third name rules.
}
}
return res;
}
miArray.sort(compareArray);
console.log(miArray);https://stackoverflow.com/questions/28011782
复制相似问题