【发布时间】:2016-06-09 11:00:05
【问题描述】:
我有一个包含对象的数组。
这些对象有一个 fullname 属性和一个 member-id。
虽然全名始终可用,但如果他或她是潜在成员但尚未注册,则成员 ID 可以为空。
结果应如下所示:
{ id: 1122, name: Adrianna Budzinski }
{ id: 3785, name: Amy Divine }
{ id: 1555, name: Gale Purdue }
{ id: 1920, name: Rex Feng }
{ id: 2010, name: Samella Vizcaino }
{ id: null, name: Bethanie Weaver }
{ id: null, name: Celesta Gullo }
{ id: null, name: Darrick Fort }
{ id: null, name: Edmundo Boulanger }
{ id: null, name: Freddie Lanclos }
{ id: null, name: Gregory Lickteig }
{ id: null, name: Gwendolyn Cuadra }
{ id: null, name: Krystal Brosnahan }
{ id: null, name: Lahoma Pagani }
{ id: null, name: Senaida Risk }
{ id: null, name: Valarie Lopes }
有 id 的成员应该按名称排序在顶部,没有 id 的成员也应该按名称排序。
到目前为止,我实现的是两个独立的排序功能,但我不知道如何合并它们。
let sortedFriends = friends.sort(function(a, b){
if(a.name < b.name) return -1;
if(a.name > b.name) return 1;
return 0;
});
sortedFriends = sortedFriends.sort(function(a, b){
if(a.id === null) return 1;
if(b.id === null) return -1;
if(a.id === b.id) return 0;
if(a.id < b.id) return -1 ;
if(a.id < b.id) return 1;
});
【问题讨论】:
-
只需将它们一个接一个地粘贴在同一个函数中。如果函数第一部分的结果为0,则运行第二部分,否则返回结果。
标签: javascript arrays sorting