Javascript 过滤对象中的日期
我有:Javascript 过滤对象中的日期,javascript,node.js,reactjs,react-native,object,Javascript,Node.js,Reactjs,React Native,Object,我有: var date = [{date: '24.05.2019'}, {date: '27.05.2019'}, {date: '30.05.2019'}, {date: '01.06.2019'}, {date: '02.06.2019'}, {date: '05.06.2019'}, {date: '07.06.2019'}] 如何获得: 2019年5月24、27、30日 01、02、05、07 2019年6月请尝试以下代码 var formatDate = function(dat
var date = [{date: '24.05.2019'}, {date: '27.05.2019'}, {date: '30.05.2019'}, {date: '01.06.2019'}, {date: '02.06.2019'}, {date: '05.06.2019'}, {date: '07.06.2019'}]
如何获得:
2019年5月24、27、30日
01、02、05、07 2019年6月请尝试以下代码
var formatDate = function(dates) {
var monthMap = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ];
var tempDateArray = dates.map(d => d.date);
var finalJson = {};
tempDateArray.forEach(d => {
const currentKey = d.substr(3);
if (!Object.keys(finalJson).includes(currentKey)) {
finalJson[currentKey] = [];
}
finalJson[currentKey].push(d.substr(0, 2));
});
return Object.keys(finalJson).map(key => {
return finalJson[key].join(', ') + ' ' + monthMap[(parseInt(key.substr(0, 2)) - 1)] + ' ' + key.substr(3);
});
};
var date = [{date: '24.05.2019'}, {date: '27.05.2019'}, {date: '30.05.2019'}, {date: '01.06.2019'}, {date: '02.06.2019'}, {date: '05.06.2019'}, {date: '07.06.2019'}];
console.log(formatDate(date));
这不会很好,因为对于普通的日期对象,这些日期的格式不是可消化的。。。因此:
const monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
];
var date = [{date: '24.05.2019'}, {date: '27.05.2019'}, {date: '30.05.2019'},
{date: '01.06.2019'}, {date: '02.06.2019'}, {date: '05.06.2019'}, {date:
'07.06.2019'}]
const sortedMonthCollection = []
monthNames.map(month => sortedMonthCollection.push([month]))
date.map(({ date }) => {
const monthIndex = monthNames[parseInt(date.substr(3, 2))-1];
sortedMonthCollection[parseInt(date.substr(3,
2))-1].unshift(parseInt(date.substr(0, 2)))
})
您还可以使用map和reduce而不是for循环来执行此操作:
var date=[{date:'24.05.2019'},{date:'27.05.2019'},{date:'30.05.2019'},{date:'01.06.2019'},{date:'02.06.2019'},{date date:'07.06.2019'},{date date:'24.05.2020'}];
var monthNames=[‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’、‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’、];
console.log(
[
日期
.map(d=>d.date.split('.').map(Number))
.分类(
(a,b)=>a[2]-b[2]|a[1]-b[1]|a[0]-b[0]
)
.减少(
(结果[d,m,y])=>
结果集(
`${monthNames[m]}${y}`,
(
result.get(`${monthNames[m]}${y}`)| |[]
)康卡特先生(d)
),
新地图()
)
.entries(),
].map([ym,days])=>`${days.join(',')}${ym}`)
);
请添加您尝试过的代码,而不是if(!Object.keys(finalJson).includes(currentKey)){如果(!finalJson[currentKey]){我建议您在修改sortedMonthCollection
时使用date.forEach
。您通常不会在map回调中进行修改,而是返回一个新值。