问答

js 数组转换问题?

作者:admin 2021-07-08 我要评论

根据会议预定记录(一维数组)制作会议预定表 已知会议室列表: ['201', '302', '403'] 已知每天四个固定时间段: ['9-11', '11-14', '14-16', '16-18'] 已知最近...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

根据会议预定记录(一维数组)制作会议预定表

已知会议室列表:

['201', '302', '403']

已知每天四个固定时间段:

['9-11', '11-14', '14-16', '16-18']

已知最近三天(不含周末)的会议预定记录:

[
  { date: '2020-06-29', time: '9-11', room: '201', unit: 'my company 1' },
  { date: '2020-06-30', time: '11-14', room: '302', unit: 'my company 2' }
]

要求是生成最近三天(不含周末)的会议预定表,格式如下:

[
    {
        "date":"2020-06-29",
        "week":"周一",
        "rooms":[
            {
                "name":"201",
                "meetings":[
                    {
                        "time":"9-11",
                        "unit":"my company 1"
                    },
                    {
                        "time":"11-14",
                        "unit":""
                    },
                    {
                        "time":"14-16",
                        "unit":""
                    },
                    {
                        "time":"16-18",
                        "unit":""
                    }
                ]
            },
            {
                "name":"302",
                "meetings":[
                    {
                        "time":"9-11",
                        "unit":""
                    },
                    {
                        "time":"11-14",
                        "unit":"my company 2"
                    },
                    {
                        "time":"14-16",
                        "unit":""
                    },
                    {
                        "time":"16-18",
                        "unit":""
                    }
                ]
            },
            {
                "name":"403",
                "meetings":[
                    {
                        "time":"9-11",
                        "unit":""
                    },
                    {
                        "time":"11-14",
                        "unit":""
                    },
                    {
                        "time":"14-16",
                        "unit":""
                    },
                    {
                        "time":"16-18",
                        "unit":""
                    }
                ]
            }
        ]
    },
    {// 此处是2020-06-30的数据,格式同上},
    {// 此处是2020-07-01的数据,格式同上}
]
###
const meetingRooms = ['201', '302', '403'];
const timeSlot = ['9-11', '11-14', '14-16', '16-18'];
const weekday = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
const bookingRecord = [
    { date: '2020-06-29', time: '9-11', room: '201', unit: 'my company 1' },
    { date: '2020-06-29', time: '9-11', room: '302', unit: 'my company 2' },
    { date: '2020-06-29', time: '11-14', room: '201', unit: 'my company 3' },
    { date: '2020-06-30', time: '11-14', room: '302', unit: 'my company 4' },
];

let result = {};

const initialMeetings = timeSlot.map(time => ({ time, unit: '' }));
const initialRooms = meetingRooms.map(room => ({ name: room, meetings: initialMeetings }));

bookingRecord.forEach(({ date, time, room, unit }) => {
    if (!(date in result)) {
        result[date] = {
            date,
            week: weekday[new Date(date).getDay()],
            rooms: JSON.parse(JSON.stringify(initialRooms)),
        };
    }

    result[date].rooms
    .find(({ name }) => name === room).meetings
    .find(({ time: t }) => t === time).unit = unit;
});

result = Object.values(result);

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • js 数组转换问题?

    js 数组转换问题?

  • web服务器反向代理存在安全漏洞

    web服务器反向代理存在安全漏洞

  • tensorflow实现mnist分类InvalidArgume

    tensorflow实现mnist分类InvalidArgume

  • 怎么用canvas根据坐标点回显选中图片中

    怎么用canvas根据坐标点回显选中图片中

腾讯云代理商
海外云服务器