[{date:'2017-8-1'},{date:'2017-8-2'},{date:'2017-8-3'},{date:'2017-8-5'},{date:'2017-8-6'},{date:'2017-8-7'},{date:'2017-8-8'},{date:'2017-8-9'}]我有上面的数据,我试着把最后两个项目分组,给它一个属性‘周末’,剩下的是‘工作日’,我的预期输出如下
{
weekdays: [{date:'2017-8-1'},{date:'2017-8-2'},{date:'2017-8-3'},{date:'2017-8-5'},{date:'2017-8-6'},{date:'2017-8-7'}],
weekends: [{date:'2017-8-8'},{date:'2017-8-9'}]
}我的尝试失败了
data.map((obj, i) => {
if(data.length - (i + 1) >= 2) {
return {
weekdays: {
date: moment(obj.date)
}
}
}
return {
weekends: {
date: moment(obj.date)
}
}
})发布于 2017-08-28 10:56:18
如果您不确定这些日子的顺序是什么,那么:
days = [{date:'2017-8-1'},{date:'2017-8-2'},{date:'2017-8-3'},{date:'2017-8-5'},{date:'2017-8-6'},{date:'2017-8-7'},{date:'2017-8-8'},{date:'2017-8-9'}]
const isWeekend = day => (
[6, 0].includes(new Date(day.date).getDay())
);
const separate = (days) => {
const weekends = [];
const weekdays = [];
days.forEach((day) => {
isWeekend(day) ? weekends.push(day) : weekdays.push(day);
});
return { weekends, weekdays };
};
console.log(separate(days));
发布于 2017-08-28 10:47:35
如果您确信周末总是输入数组中的最后两个元素,那么您可以使用一个简单的slice。
var inputArray = [{date:'2017-8-1'},{date:'2017-8-2'},{date:'2017-8-3'},{date:'2017-8-5'},{date:'2017-8-6'},{date:'2017-8-7'},{date:'2017-8-8'},{date:'2017-8-9'}],
outputArray = {
weekdays: inputArray.slice(0,5),
weekends: inputArray.slice(6)
};
console.log(outputArray);
发布于 2017-08-28 10:49:47
可以将字符串转换为日期,然后使用.getDay()方法检查日期是哪一天。然后将其放入相应的数组中,如下所示:
var array = [{date:'2017-8-1'},{date:'2017-8-2'},{date:'2017-8-3'},{date:'2017-8-5'},{date:'2017-8-6'},{date:'2017-8-7'},{date:'2017-8-8'},{date:'2017-8-9'}];
var obj = {
weekdays: [],
weekends: []
};
array.forEach((el, key) => {
if(new Date(el.date).getDay() === 0 || new Date(el.date).getDay() === 6) obj.weekends.push(el); else obj.weekdays.push(el);
});
console.log(obj);
https://stackoverflow.com/questions/45917129
复制相似问题