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

时间:2015-02-20 12:29:31

标签: javascript jquery arrays sorting

我有以下结构:

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

2 个答案:

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