2014-06-11 72 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