2014-06-11 74 views
5

我在JavaScript中有下面的数组,我需要按姓氏排序。Javascript Array按姓氏排序

var names = [Jenny Craig, John H Newman, Kelly Young, Bob]; 

结果将是:

Bob, 
Jenny Craig, 
John H Newman, 
Kelly Young 

如何做到这一点的例子?

+1

你想按字母顺序对它们进行排序,还是只将那些没有姓氏的人先排序? –

+1

[是'Bob'的第一个还是最后一个名字? 'H'属于第一个还是最后一个名字?](http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/) – Bergi

+0

埃米尔答案适合我。 –

回答

6

试试这个:

function compare(a, b) { 
    var splitA = a.split(" "); 
    var splitB = b.split(" "); 
    var lastA = splitA[splitA.length - 1]; 
    var lastB = splitB[splitB.length - 1]; 

    if (lastA < lastB) return -1; 
    if (lastA > lastB) return 1; 
    return 0; 
} 

var names = ["John H Newman", "Jenny Craig", "Kelly Young", "Bob"]; 
var sorted = names.sort(compare); 
console.log(sorted); 

这里有一个Fiddle

+0

这工作,现在我必须循环它,并显示结果在用户界面。 :) –

0
function lastNameSort(a,b) { 
    return a.split(" ").pop()[0] > b.split(" ").pop()[0] 
}; 
names.sort(lastNameSort); 

这是灵感来自this answer