按属性长度排序对象数组

问题描述 投票:4回答:3

我有这个数组:

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"
    }
]
javascript arrays sorting
3个回答
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
投票

试试这个:

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

objs.sort(compare);

0
投票

有点晚了,但另类:

itemList.sort(function(e1,e2){ return  (e1.image === undefined) - (e2.image === undefined); });
© www.soinside.com 2019 - 2024. All rights reserved.