Javascript数组按姓氏,名字排序

时间:2014-06-11 21:55:10

标签: javascript arrays sorting

我在JavaScript中有以下数组,我需要按姓氏对它们进行排序。

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

结果将是:

Bob, 
Jenny Craig, 
John H Newman, 
Kelly Young 

有关如何执行此操作的任何示例?

3 个答案:

答案 0 :(得分:8)

试试这个:

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

答案 1 :(得分:1)

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

这受到this answer的启发。

答案 2 :(得分:0)

尝试一下:

function sortContacts(names, sort) {

    if(sort == "ASC")
        return names.sort(lastNameSort);    
    else
        return names.sort(lastNameSortDesc);    

}

//ASCENDING SORT
function lastNameSort(a,b) {  
    if(a.split(" ")[1] > b.split(" ")[1])
      return 1;
    else
      return -1;
};

//DESCENDING SORT
function lastNameSortDesc(a,b) {  
    if(a.split(" ")[1] > b.split(" ")[1])
      return -1;
    else
      return 1;
};

据您所知,Javascript的SORT函数允许我们在参数中发送“比较”方法。在上面的代码中,它使用的是相同的技术。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

enter image description here