Javascript数组按姓、名排序

Javascript数组按姓、名排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有下面的JavaScript数组,我需要按姓氏对它们进行排序 var names = [Jenny Craig, John H Newman, Kelly Young, Bob]; 结果将是: Bob, Jenny Craig, John H Newman, Kelly Young 有关于如何做到这一点的例子吗?试试这个: function compare(a, b) { var splitA = a.split(" "); var splitB = b.split

我有下面的JavaScript数组,我需要按姓氏对它们进行排序

var names = [Jenny Craig, John H Newman, Kelly Young, Bob];
结果将是:

Bob, 
Jenny Craig, 
John H Newman, 
Kelly Young 
有关于如何做到这一点的例子吗?

试试这个:

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);
功能比较(a、b){
var splitA=a.split(“”);
var splitB=b.split(“”);
var lastA=splitA[splitA.length-1];
var lastB=splitB[splitB.length-1];
if(lastAlastB)返回1;
返回0;
}
变量名称=[“约翰·H·纽曼”、“詹妮·克雷格”、“凯利·杨”、“鲍勃”];
var sorted=names.sort(比较);
控制台日志(已排序);
这是一个例子

灵感来源于。

试试这个:

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的排序函数允许我们在参数中发送一个“Compare”方法。在上面的代码中,它使用相同的技术


< P> < /P>你想按字母顺序排序吗?还是先把没有姓氏的字母排序?阿米尔回答对我起作用。杰夫瑞:如果阿米尔的答案对你有用,那么请考虑接受它:)这是有效的,现在我必须把它循环并在UI中显示结果。
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;
};