用 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