如何解决根据日期数组创建年和月的唯一对象
我正在尝试根据日期数组创建一个独特的年份和月份对象,请看下面的意思:
const availableDates = ["26-01-2022","30-01-2022","02-03-2022","16-04-2022","01-01-2023"]; // This list will be really long,just an example
我想使用 availableDates 创建一个像下面这样的独特对象,但在试图弄清楚时遇到问题:
const uniqueDates = {
"2022": ["Jan","Mar","Apr"],"2023": ["Jan"]
};
如果您有更好的方法来实现这一目标,请告诉我!
提前致谢
解决方法
我们可以使用 Array.reduce 创建所需的地图,并使用 Set 来确保我们每年只保留一组唯一的月份。
const availableDates = ["26-01-2022","30-01-2022","02-03-2022","16-04-2022","01-01-2023","01-01-2023"];
const months = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
const uniqueDates = availableDates.reduce((acc,dt) => {
let [day,month,year] = dt.split("-");
acc[year] = [...new Set(acc[year] || []).add(months[month - 1])];
return acc;
},{})
console.log("Unique object:",uniqueDates)
也许是这样的:
let month = {
"01" : "Jan","02" : "Feb","03" : "Mar","04" : "Apr",// ...
};
let res = ["26-01-2022","01-01-2023"].reduce((acc,el) => {
let arr = el.split("-");
if( acc[arr[2]] && !acc[arr[2]].includes(month[arr[1]])){
acc[arr[2]].push(month[arr[1]])
} else if(!acc[el[2]]){
acc[arr[2]] = [month[arr[1]]]
}
return acc;
},{})
console.log(res)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。