在 JavaScript 中按两个条件对数组进行排序
javascriptweb developmentobject oriented programming更新于 2025/9/24 14:04:17
让以下数组按日期和 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 }
]
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

