Javascript 如何在JS中基于对象属性对数组中的项进行排序

Javascript 如何在JS中基于对象属性对数组中的项进行排序,javascript,arrays,ecmascript-6,javascript-objects,ecmascript-5,Javascript,Arrays,Ecmascript 6,Javascript Objects,Ecmascript 5,我有一个对象数组: [ { Name: likes:[] ... } ] 我需要先订购没有likes的对象,其中likes是未定义的,然后订购likes数组中只有1个项目的对象,然后订购likes数组中有更多项目的其他对象。如何正确执行此操作?功能排序(选择器){ 常数cmp=(a,b)=>(选择器(a)-选择器(b)); 返回列表=>list.sort(cmp); } const data=[{Name:“Foo”,likes:[{},{},{},{Name:“Bar”,likes:[{}]

我有一个对象数组:

[
{
Name:
likes:[]
...
}
]
我需要先订购没有likes的对象,其中likes是未定义的,然后订购likes数组中只有1个项目的对象,然后订购likes数组中有更多项目的其他对象。如何正确执行此操作?

功能排序(选择器){
常数cmp=(a,b)=>(选择器(a)-选择器(b));
返回列表=>list.sort(cmp);
}
const data=[{Name:“Foo”,likes:[{},{},{},{Name:“Bar”,likes:[{}]},{Name:“Baz”,likes:[{}]},{Name:“Plugh”,likes:[]};
const sortByLikes=sortBy(({likes})=>likes.length);
log(sortByLikes(data));
var-temp=[
{
名称:“abc”,
喜欢:[1,2,3]
},
{
名称:“ac”,
喜欢:[1]
},
{
姓名:“bc”,
喜欢:空
},
{
名称:“c”,
喜欢:[1,2,3,4]
}
];
温度=温度排序((a,b)=>{
if(a.likes==undefined | | a.likes==null)
返回-1;
else if(b.likes==undefined | | b.likes==null)
返回1;
否则{
返回a.likes.length-b.likes.length;
}
});

控制台日志(temp)
为什么您同时拥有
ecmascript-5
ecmascript-6
标签?它实际上与问题无关,并且实际上与..“如何才能正确完成?”-使用
array.sort()
function:-)请发布您的问题。所以不适合这种(我没有代码,但需要解决方案)的问题。。