【发布时间】:2021-03-12 11:46:46
【问题描述】:
我有一个如下的对象数组
data = [
{
mas_name: (...),
mas_plan_end: (...) // 'YYYY-MM-DD' eg: '2021-03-19'
mas_plan_start: (...) // 'YYYY-MM-DD' eg: '2021-03-19'
...
},
{
mas_name: (...),
mas_plan_end: (...)
mas_plan_start: (...)
...
}
]
在上面的数组中,一些对象甚至可能包含 mas_plan_start 为 null.. 我需要从此数组中获取 mas_plan_start 的最小值和最大值。 我尝试通过以下方式使用时刻
const max = moment.max(children.map((o) =>
o.mas_plan_start ? o.mas_plan_start : moment(new Date()).format("YYYY-MM-DD")
)) ;
const min = moment.min(children.map((o) =>
o.mas_plan_start ? o.mas_plan_start : moment(new Date()).format("YYYY-MM-DD")
)) ;
我该如何解决这个问题,...或者有什么方法可以在不使用时刻的情况下做到这一点。
解决方案:
const max_date = moment.max(data.filter((o) =>
o.mas_plan_end !== null
).map((date) =>
moment(date.mas_plan_end, 'YYYY-MM-DD') // converting to moment instance so that .max command will work
));
parent.mas_plan_end = max_date._i; // to get the date String back from the moment instance
【问题讨论】:
-
"不使用时刻" - 获取所有日期字符串并对其进行排序。使用给定的格式,第一个元素将是 min,最后一个元素是 max
-
是的,如果我按升序对其进行排序..第一个元素将是最小元素,最后一个元素将是最大元素......但是我将如何对日期字符串执行这种排序?
-
moment.min(): “返回给定时刻实例的最小值(最远的过去)。”(.max()相同) - 你正在传递一个字符串数组。 -
我已经发布了文档的相关部分(+ 链接),甚至突出了重要部分。 时刻实例不是字符串。
标签: javascript arrays vue.js vuejs2 momentjs