javascript - 如何获取数组中每个月的最新时间戳
问题描述
我有一个数组,里面有一堆对象和一些键/值对 + 时间戳(moment.js 格式的时间戳)。我总共有 12 个月的时间戳,需要获取每个月的最后一个时间戳并删除其他对象。
其实我什至不知道如何开始。我已经使用 _.sortBy 按日期对数组进行排序,但不知道如何继续。
array1 = [
{name:name1,timestamp:2018-09-15T07:00:00.0},
{name:name2,timestamp:2018-09-15T12:00:00.0},
{name:name3,timestamp:2018-09-28T05:00:00.0},
{name:name4,timestamp:2018-09-30T01:00:00.0},
{name:name5,timestamp:2018-10-02T10:00:00.0},
{name:name6,timestamp:2018-10-02T11:00:00.0},
{name:name7,timestamp:2018-10-15T07:00:00.0},
{name:name8,timestamp:2018-12-05T08:00:00.0},
{name:name9,timestamp:2018-12-05T09:00:00.0},
{name:name10,timestamp:2018-12-05T10:00:00.0}
]
预期的结果是
array1 = [
{name:name4,timestamp:2018-09-30T01:00:00.0},
{name:name7,timestamp:2018-10-15T07:00:00.0},
{name:name10,timestamp:2018-12-05T10:00:00.0}
]
解决方案
reduce
数组到一个有几个月作为键的对象,每次你找到它们时都会覆盖它们,那么你的结果就是 Object.values` 的数组:
const array1 = [
{ name: "name1", timestamp: "2018-09-15T07:00:00.0" },
{ name: "name2", timestamp: "2018-09-15T12:00:00.0" },
{ name: "name3", timestamp: "2018-09-28T05:00:00.0" },
{ name: "name4", timestamp: "2018-09-30T01:00:00.0" },
{ name: "name5", timestamp: "2018-10-02T10:00:00.0" },
{ name: "name6", timestamp: "2018-10-02T11:00:00.0" },
{ name: "name7", timestamp: "2018-10-15T07:00:00.0" },
{ name: "name8", timestamp: "2018-12-05T08:00:00.0" },
{ name: "name9", timestamp: "2018-12-05T09:00:00.0" },
{ name: "name10", timestamp: "2018-12-05T10:00:00.0" }
];
const result = array1.reduce((acc, curr) => {
const month = new Date(curr.timestamp).getMonth() + 1;
acc[month] = curr;
return acc;
}, {});
console.log(Object.values(result));
推荐阅读
- cx-freeze - 构建编译的 sagemath 脚本
- amazon-web-services - AWS CloudWatch 日志到 ELK
- python - 删除字母的程序继续打印以前的输出
- android-espresso - device.getCurrentPackagename 在 espresso 测试用例中返回为 null
- kotlin - 如何将 @Transient 与缺少支持字段的 Micronaut Data 和 Kotlin 属性一起使用?
- unity3d - 在统一 2d 视图中获得旋转立方体上的平滑边缘
- python - 如何返回列表中的多个元素?
- laravel - Laravel - 如何从商店资源的路线中获取模型名称或实例
- wpf - 如何在 VisualBrush 上设置 ViewPort 和 ViewBox 以在 WPF Canvas 中创建虚线背景?
- python - 刽子手游戏:一个字给了,怎么给个清单