【发布时间】:2017-05-19 01:05:38
【问题描述】:
我有以下 json 格式
{
"timings": {
"a": "02:57",
"b": "05:19",
"c": "13:22",
"d": "17:39",
"e": "21:26",
"f": "21:26",
"g": "23:40",
"h": "02:47",
"i": "01:22"
}
}
使用 lodash 和 momentjs,我如何选择值相同或在当前时间之后的对象。
我已经尝试了以下
let findTime = (times) => {
const timeNow = moment();
let nextEvent = null;
lodash.find(times, function (value, key) {
const thisTime = moment(value, 'HH:mm');
if (thisTime.isSameOrAfter(timeNow, 'second')) {
console.log(key + " is next");
nextEvent = {
'name': key,
'time': value
};
return;
}
});
return nextEvent;
}
问题是它不断返回我的项目,不管。我认为函数 find 会遍历所有条目。
我无法找到其他解决方案。
我要维护时代的秩序。
任何指针...?
【问题讨论】:
-
您最好使用此处的“lodash.each”(或 forEach)函数:lodash.com/docs/#forEach 如果您想要最接近的匹配,则需要跟踪“最后一个最近的匹配”,并根据“现在”与从哈希元素导出的时间之间的差异进行计算。另外,您是否确认当 moment 按 HH:mm 解析时间时,它会应用当前日期(如 5-18-2017),还是假设为 1970?
标签: javascript json momentjs lodash