首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >新属性中的对象组数组

新属性中的对象组数组
EN

Stack Overflow用户
提问于 2017-08-28 10:42:20
回答 6查看 84关注 0票数 1
代码语言:javascript
复制
[{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'}]

我有上面的数据,我试着把最后两个项目分组,给它一个属性‘周末’,剩下的是‘工作日’,我的预期输出如下

代码语言:javascript
复制
{
    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'}]
}

我的尝试失败了

代码语言:javascript
复制
data.map((obj, i) => {

    if(data.length - (i + 1) >= 2) {
        return {
            weekdays: {
                date: moment(obj.date)
            }
        }
    }

    return {
        weekends: {
            date: moment(obj.date)
        }
    }
})
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-08-28 10:56:18

如果您不确定这些日子的顺序是什么,那么:

代码语言:javascript
复制
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));

票数 1
EN

Stack Overflow用户

发布于 2017-08-28 10:47:35

如果您确信周末总是输入数组中的最后两个元素,那么您可以使用一个简单的slice

代码语言:javascript
复制
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);

票数 1
EN

Stack Overflow用户

发布于 2017-08-28 10:49:47

可以将字符串转换为日期,然后使用.getDay()方法检查日期是哪一天。然后将其放入相应的数组中,如下所示:

代码语言:javascript
复制
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);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45917129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档