gpt4 book ai didi

javascript - lodash orderby 部分排序

转载 作者:行者123 更新时间:2023-12-01 16:25:33 26 4
gpt4 key购买 nike

我有一个包含如下所示元素的数组。我需要对数组进行部分排序。而所有带有 fix===1 的元素都应该排在第一位,并保留它们在数据集中出现的顺序。所有其他 (fix==0) 应该按照 jobDueDate 排序。

我尝试了以下方法:

_.orderBy(data, ['fix', 'jobDueDate'], ['desc', 'asc']);

这会将带有 fix==1 的条目放在顶部,但也会对它们应用排序,这不是要求。

[
{
"id": 6060,
"jobNumber": 1878,
"jobDueDate": "2018-02-07T00:00:00",
"fix": 1
},
{
"id": 5337,
"jobNumber": 1836,
"jobDueDate": "2018-02-05T00:00:00",
"fix": 1
},
{
"id": 5702,
"jobNumber": 1863,
"jobDueDate": "2018-02-06T00:00:00",
"fix": 1
},
{
"id": 32583,
"jobNumber": 1611,
"jobDueDate": "1753-01-01T00:00:00",
"fix": 0
},
{
"id": 33403,
"jobNumber": 1932,
"jobDueDate": "2008-01-28T00:00:00",
"fix": 0
},
{
"id": 29481,
"jobNumber": 2741,
"jobDueDate": "2018-02-03T00:00:00",
"fix": 0
},
{
"id": 278,
"jobNumber": 1541,
"jobDueDate": "2018-02-05T00:00:00",
"fix": 0
},
{
"id": 5331,
"jobNumber": 1836,
"jobDueDate": "2018-02-05T00:00:00",
"fix": 0
},
{
"id": 5708,
"jobNumber": 1863,
"jobDueDate": "2018-02-06T00:00:00",
"fix": 0
},
{
"id": 6066,
"jobNumber": 1878,
"jobDueDate": "2018-02-07T00:00:00",
"fix": 0
},
{
"id": 5193,
"jobNumber": 1825,
"jobDueDate": "2018-02-08T00:00:00",
"fix": 0
}
]

最佳答案

使用实现所需逻辑的自定义排序函数。如果我没听错,这应该可以解决问题:

_.sortBy(input, (o) => o.fix == 1 ? 0 : o.jobDueDate);

关于javascript - lodash orderby 部分排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62300227/

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