2014-06-11 18 views
5

Ho il seguente array in JavaScript, ho bisogno di ordinarli per cognome.Array Javascript ordina per cognome, nome

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

risultati sarebbero:

Bob, 
Jenny Craig, 
John H Newman, 
Kelly Young 

Eventuali esempi su come fare questo?

+1

vuoi ordinarli alfabeticamente, o semplicemente mettere quelli senza cognome prima? –

+1

[È 'Bob' un nome o un cognome? Il 'H' appartiene al nome o al cognome?] (Http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/) – Bergi

+0

La risposta Amir ha funzionato per me. –

risposta

6

Prova questo:

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); 

Ecco un Fiddle.

+0

Che ha funzionato, ora devo looparlo e mostrare i risultati in un interfaccia utente. :) –

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

Questo è stato ispirato da this answer.

Problemi correlati