按属性长度排序对象数组

时间:2015-08-28 13:35:30

标签: javascript arrays sorting

我有这个数组:

var itemList = [
    {
        image: "images/home.jpg",
        name: "Home"
    },
    {
        name: "Elvis",
    },
    {
        name: "Jonh"
    },
    {
        image: "images/noah.jpg",
        name: "Noah"
    },
    {
        name: "Turtle"
    }
]

如何将数组组织到具有image属性的对象中,以便它看起来像这样?:

var itemList = [
    {
        image: "images/home.jpg",
        name: "Home"
    },
    {
        image: "images/noah.jpg",
        name: "Noah"
    },
    {
        name: "Elvis",
    },
    {
        name: "Jonh"
    },
    {
        name: "Turtle"
    }
]

3 个答案:

答案 0 :(得分:5)

此代码放在具有属性'image'的开头元素中。其他元素保持相同的顺序。

function compare(a,b) {
   if ('image' in a) {
       return 1;
   } else if ('image' in b) {
      return -1;
   } else {
      return 0;
   }
}

itemList.sort(compare);

答案 1 :(得分:1)

试试这个:

function compare(a,b) {
  if (a.image && b.image)
    return 0;
  if (a.image)
    return 1;
  return -1;
}

objs.sort(compare);

答案 2 :(得分:0)

有点晚了,但另类:

s