Javascript 按字段值对数组中的对象进行排序(如果存在)

Javascript 按字段值对数组中的对象进行排序(如果存在),javascript,jquery,arrays,sorting,Javascript,Jquery,Arrays,Sorting,我的结构如下: var participant1 = { name : "bbb", nickname : "", } ; var participant2 = { name : "", nickname : "aaa" } ; var participant3 = { name : "ccc", nickname : "" } ; 我有一个包含结构实例的数组: var array = [participant3, participant1,

我的结构如下:

var participant1 = {
    name : "bbb",
    nickname : "",
} ;

var participant2 = {
    name : "",
    nickname : "aaa"
} ;

var participant3 = {
    name : "ccc",
    nickname : ""
} ;
我有一个包含结构实例的数组:

var array = [participant3, participant1, participant2];
我想按字母顺序排列这个数组。首先是名字,但若名字不存在,我想用昵称来排序。最终结果将是:

var array = [participant2, participant1, participant3];
要按aaa、bbb、ccc对对象进行排序,您需要创建一个比较函数,然后使用.sort


使用此自定义排序功能

var arr = [participant3, participant1, participant2],
    sortFunc = function(a,b){
    if(a.name !== '' && b.name !== ''){
        return a.name > b.name;
    } else if(a.name !== ''){
        return a.name > b.nickname;
    } else if(b.name !== ''){
        return a.nickname > b.name;
    } else{
        return a.nickname > b.nickname;
    }

}

arr.sort(sortFunc);

尝试将参与者2的昵称:aaa替换为昵称:xxx。虽然被接受,但这个答案仍然是错误的,只是偶然的。我告诉过你两次,你的答案是错误的,给了你时间去修正它。你没有,因此DV。
var arr = [participant3, participant1, participant2],
    sortFunc = function(a,b){
    if(a.name !== '' && b.name !== ''){
        return a.name > b.name;
    } else if(a.name !== ''){
        return a.name > b.nickname;
    } else if(b.name !== ''){
        return a.nickname > b.name;
    } else{
        return a.nickname > b.nickname;
    }

}

arr.sort(sortFunc);