我有以下结构:
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];
(按&#34排序对象; aaa"," bbb"," ccc")
答案 0 :(得分:2)
使用此自定义排序功能
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);
答案 1 :(得分:-1)
您需要创建compare
功能,然后使用.sort()
function compare(a,b) {
if (a.name< b.name)
return -1;
else if (a.name> b.name)
return 1;
else
{
if (a.nickname< b.nickname) return -1;
else return 1;
}
}
array.sort(compare);