Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回CreationTime系列中的最近时间_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 返回CreationTime系列中的最近时间

Javascript 返回CreationTime系列中的最近时间,javascript,angular,typescript,Javascript,Angular,Typescript,我不完全确定我是如何回答这个问题的,但我的问题是我在做一个api调用,它会返回一堆有创建时间的消息,现在我想做的是只返回同一日期的消息的最新creationTime,所以如果我在2018年3月15日有30条消息,我想抓住最新的时间,然后丢弃其余的。。并对具有相同日期的每组消息执行此操作 所以到目前为止我所做的是 使用lodash,我获得了所有的消息,过滤掉了所有具有特定类型的消息,并且我按creationTime对它们进行了排序,因此最新的消息位于顶部,然后向下。。现在我的问题是,我怎样才能为每

我不完全确定我是如何回答这个问题的,但我的问题是我在做一个api调用,它会返回一堆有创建时间的消息,现在我想做的是只返回同一日期的消息的最新creationTime,所以如果我在2018年3月15日有30条消息,我想抓住最新的时间,然后丢弃其余的。。并对具有相同日期的每组消息执行此操作

所以到目前为止我所做的是

使用lodash,我获得了所有的消息,过滤掉了所有具有特定类型的消息,并且我按creationTime对它们进行了排序,因此最新的消息位于顶部,然后向下。。现在我的问题是,我怎样才能为每个日期创建一个最新时间数组

this._activityServiceProxy.getAllItems(start, end).subscribe(result => {
        // this.messages = result;
        // console.log(result);
        let loginUnfiltered = _.filter(result, {'title': 'LOGIN'});
        let loginFiltered = _.orderBy(loginUnfiltered, {'creationTime': 'desc'});
        console.log(loginFiltered);
});
任何帮助都将不胜感激

谢谢

使用
.map(…)
仅获取最新
creationTime的数组

this._activityServiceProxy.getAllItems(start, end).subscribe(result => {
        // this.messages = result;
        // console.log(result);
        let loginUnfiltered = _.filter(result, {'title': 'LOGIN'});
        let loginFiltered = _.orderBy(loginUnfiltered, {'creationTime': 'desc'});
        const creationTimes = loginFiltered.map(l => l.creationTime);
        console.log(creationTimes);
        const latestTime = creationTimes[0];
        console.log(latestTime);
});

您可以使用下划线的
groupBy
函数来实现这一点:

const groups = _.groupBy(loginFiltered, (login) => {
    const asDate = new Date(login.creationTime);
    asDate.setHours(0, 0, 0, 0);
    return asDate;
});
Object.keys(groups).forEach((key) => {
    console.log(groups[key][0]);
});
您可以按
creationDate
属性分组,但要删除时间组件,以便将所有日期分组在一起。然后,循环遍历结果,每天只取第一个条目

请注意,这假设您的
creationTime
属性是一个字符串,因为它来自API。如果已经是日期,则不需要
新日期