gpt4 book ai didi

javascript - 如何按两个属性对数组进行排序 - 按字母顺序排列但末尾为空值?

转载 作者:行者123 更新时间:2023-11-30 11:56:44 30 4
gpt4 key购买 nike

我有一个包含对象的数组。

这些对象有一个全名属性和一个成员 ID。

虽然全名始终可用,但如果他或她是潜在成员(member)但尚未注册,则成员(member) 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;
});

最佳答案

您可以使用按组(idnull)和按名称排序。

var array = [{ id: null, name: 'Darrick Fort' }, { id: null, name: 'Edmundo Boulanger' }, { id: 1122, name: 'Adrianna Budzinski' }, { id: null, name: 'Freddie Lanclos' }, { id: null, name: 'Gregory Lickteig' }, { id: null, name: 'Gwendolyn Cuadra' }, { id: 2010, name: 'Samella Vizcaino' }, { id: null, name: 'Bethanie Weaver' }, { id: null, name: 'Celesta Gullo' }, { id: 3785, name: 'Amy Divine' }, { id: null, name: 'Krystal Brosnahan' }, { id: null, name: 'Lahoma Pagani' }, { id: 1920, name: 'Rex Feng' }, { id: 1555, name: 'Gale Purdue' }, { id: null, name: 'Senaida Risk' }, { id: null, name: 'Valarie Lopes' }];

array.sort(function (a, b) {
return (a.id === null) - (b.id === null) || a.name.localeCompare(b.name);
});

console.log(array);

关于javascript - 如何按两个属性对数组进行排序 - 按字母顺序排列但末尾为空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37724077/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com