【发布时间】:2021-08-13 16:13:37
【问题描述】:
下面是我的js对象数组。
const objArray = [
{
file: 'file_1',
start_time: '2021-08-12 14:00:00'
status: 'pending'
},
{
file: 'file_2',
start_time: '2021-08-12 14:00:00'
status: 'completed'
},
{
file: 'file_3',
start_time: '2021-08-14 15:00:00'
status: 'pending'
},
{
file: 'file_1',
start_time: '2021-08-14 03:00:00'
status: 'pending'
},
{
file: 'file_2',
start_time: '2021-08-14 03:00:00'
status: 'pending'
},
{
file: 'file_2',
start_time: '2021-11-11 11:11:00'
status: 'pending'
}
]
从上面的数组中,我需要根据开始时间字段过滤对象。如果开始时间相同,则应将它们分组为子数组。在子数组中也不能有具有相同文件名的对象。例如,在上面的数组中,如果将对象 1&2 与 4&5 进行比较,它们每个都有自己的开始时间值,但它们的文件名相同。因此,我只需要其中一组,即时间戳最低的 1&2。 所以最终的输出数组应该如下,
[
[
{
file: 'file_1',
start_time: '2021-08-12 14:00:00'
status: 'pending'
},
{
file: 'file_2',
start_time: '2021-08-12 14:00:00'
status: 'completed'
}
],
[
{
file: 'file_3',
start_time: '2021-08-14 15:00:00'
status: 'pending'
}
],
[
{
file: 'file_2',
start_time: '2021-11-11 11:11:00'
status: 'pending'
}
]
]
我尝试通过遍历初始数组中的每个对象来实现它。但是实现这一目标的最快方法是什么?
【问题讨论】:
-
没有办法不遍历初始数组中的每个对象。让我们看看你的实现。
-
并非如此。我需要根据开始时间将它们分组为子数组
-
您似乎想要的输出是两个不相关操作的结果:(1)过滤与每个文件关联的最古老的项目(2)按日期对剩余项目进行分组。但是您的描述如此混乱,必须从示例输出中猜测预期结果。此外,这并不是对对象进行分组,因此您的问题的措辞具有误导性。我投票支持关闭它。
标签: javascript arrays javascript-objects