困っていること
users
配列をgroups
配列のtype
で比較してsortさせる方法を知りたいです。
users
にnull
が存在する場合を考慮すると、ソートをうまく出来なくて困っています。
typescript
1const groups: { id: string; name: string; type: number }[] = [ 2 { id: 'gxyz1', name: 'group1', type: 1 }, 3 { id: 'gapxk', name: 'group2', type: 2 }, 4 { id: 'gjkls', name: 'group3', type: 3 }, 5]; 6const getType = (groupId: string) => { 7 return groups.find((st) => st.id == groupId).type; 8}; 9const users: { name: string; groupId: string | null }[] = [ 10 { name: 'user1', groupId: 'gxyz1' }, 11 { name: 'user2', groupId: 'gapxk' }, 12 { name: 'user3', groupId: 'gxyz1' }, 13 { name: 'user4', groupId: 'gjkls' }, 14 { name: 'user5', groupId: null }, 15 { name: 'user6', groupId: 'gapxk' }, 16 { name: 'user7', groupId: 'gjkls' }, 17 { name: 'user8', groupId: null }, 18 { name: 'use9', groupId: 'gapxk' }, 19 { name: 'use10', groupId: 'gxyz1' }, 20]; 21 22// こんな感じでいけるかなで書いてみました... 23users.sort((a, b) => (getType(a.groupId) > getType(b.groupId) ? 1 : -1)); 24 25// NOTE: usersをgroupsのtype順に並び替えたい。 26// groupIdがnullの場合は、1番最後に来るようにする 27// 下記のような形にしたいです。 28[ 29 { name: 'user1', groupId: 'gxyz1' }, 30 { name: 'user3', groupId: 'gxyz1' }, 31 { name: 'use10', groupId: 'gxyz1' }, 32 { name: 'user2', groupId: 'gapxk' }, 33 { name: 'user6', groupId: 'gapxk' }, 34 { name: 'use9', groupId: 'gapxk' }, 35 { name: 'user7', groupId: 'gjkls' }, 36 { name: 'user4', groupId: 'gjkls' }, 37 { name: 'user5', groupId: null }, 38 { name: 'user8', groupId: null }, 39];
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。