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回调中进行修改,而是返回一个新值。