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