我正在尝试对一些保留进行排序,并希望它们按升序进行排序(过去几天少的保留首先显示),但我认为我使用的排序不正确。你能帮我么?例1例2
{
"customerId": "[email protected]",
"dueDate": 1614409200000,
"reservationItems": [
{
"description": "Paddle",
"itemId": 4949490,
"returned": false
},
{
"description": "Boat",
"itemId": 4949490,
"returned": false
},
{
"description": "Boat",
"itemId": 4949490,
"returned": false
},
{
"description": "Snowboard leash",
"itemId": 4949494,
"returned": false
}
]
}
.filter((customer) =>
customer.reservationItems.some((item) => !item.returned)
).sort((item) => item.dueDate);
考虑到API响应采用数组格式(您仅发布了对象示例,但想使用数组过滤器方法实现排序)。请尝试以下代码根据DueDate进行排序。
数组格式的API响应
var arr = [
{
customerId: "[email protected]",
dueDate: 1614409200000,
reservationItems: [
{ description: "Paddle", itemId: 4949490, returned: false },
{ description: "Boat", itemId: 4949490, returned: false },
{ description: "Boat", itemId: 4949490, returned: false },
{ description: "Snowboard leash", itemId: 4949494, returned: false },
],
},
{
customerId: "[email protected]",
dueDate: 161440920000,
reservationItems: [
{ description: "Paddle", itemId: 4949490, returned: false },
{ description: "Boat", itemId: 4949490, returned: false },
{ description: "Boat", itemId: 4949490, returned: false },
{ description: "Snowboard leash", itemId: 4949494, returned: false },
],
},
];
排序:
let sortedList = arr
.filter((customer) =>
customer.reservationItems.some((item) => !item.returned)
)
.sort((a, b) => a.dueDate - b.dueDate);
console.log(sortedList);
在此处检查输出-> https://codepen.io/askannan/pen/PobRbZq
编辑:
javascript sort()方法在对数字进行排序时将产生错误的结果。我们可以通过提供“比较功能”来解决此问题。(返回ab)
let arrSort = [11,2,6,5].sort()
->这将返回-> [11,2,5,6]
因为它只比较了第一个字符,所以javascript将11视为一个较小的数字。(在chrome控制台中尝试此操作)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句