用 JavaScript 按兩個條件對陣列進行排序
按日期和 isImportant 排序以下陣列。具有 isImportant 屬性 true 的所有物件均高於具有 isImportant false 的任何物件,並且兩組按 date 屬性進行排序。
以下為我們的陣列 −
const array = [{
id: 545,
date: 591020824000,
isImportant: false,
},
{
id: 322,
date: 591080224000,
isImportant: false,
},
{
id: 543,
bdate: 591080424000,
isImportant: true,
},
{
id: 423,
date: 591080225525,
isImportant: false,
},
{
id: 135,
date: 591020225525,
isImportant: true,
},
];此後,我們可以像這樣使用陣列排序方法來實現以上陣列上的所需結果 −
array.sort((a, b) => {
if(a.isImportant && !b.isImportant){
return -1;
}else if(!a.isImportant && b.isImportant){
return 1;
}else{
return b.date-a.date;
}
});sort() 回撥函式通常接收兩個引數,比如 a 和 b,它們不過是 sort() 所呼叫陣列的兩個元素,並且回撥函式針對陣列每個可能的元素對執行。
從回撥函式返回 -1(任何負值)表示我們將第一個元素排在第二個元素之上。
從回撥函式返回 1(任何正值)表示我們將第二個元素排在第一個元素之上。
返回 0 不做任何更改。我們檢查 a 或 b 是否將 isImportant 屬性設為 false,如果是,我們將對其進行降級。否則,我們將根據它們的 date 屬性對它們進行排序。
示例
現在讓我們來看一個完整的示例 −
const array = [{
id: 545,
date: 591020824000,
isImportant: false,
},
{
id: 322,
date: 591080224000,
isImportant: false,
},
{
id: 543,
bdate: 591080424000,
isImportant: true,
},
{
id: 423,
date: 591080225525,
isImportant: false,
},
{
id: 135,
date: 591020225525,
isImportant: true,
},
];
array.sort((a, b) => {
if(a.isImportant && !b.isImportant){
return -1;
}else if(!a.isImportant && b.isImportant){
return 1;
}else{
return b.date-a.date;
}
});
console.log(array);輸出
在控制檯中輸入程式碼的輸出將是 −
[
{ id: 3, date: 591080424000, isImportant: true },{ id: 5, date: 591020225525, isImportant: true },
{ id: 4, date: 591080225525, isImportant: false },{ id: 2, date: 591080224000, isImportant: false },
{ id: 1, date: 591020824000, isImportant: false }
]
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP