备赛蓝桥杯之第十六届模拟赛2期职业院校组第七题:企业微信会议助手(第一问)
提示:本篇文章仅仅是作者自己目前在备赛蓝桥杯中,自己学习与刷题的学习笔记,写的不好,欢迎大家批评与建议
由于个别题目代码量与题目量偏大,请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题,在这里只提供部分原题代码
本题目为:备赛蓝桥杯之第十六届模拟赛2期职业院校组第七题:企业微信会议助手(第一问)
题目:
经过运行环境运行之后的效果如下:
本题需要做的代码如下:
const fetchMeetingData = () => {
// TODO: 待补充代码
};
const formatDate = (dateStr) => {
// TODO: 待补充代码
};
本题目标如下:
- 补充
fetchMeetingData
函数,向js/meetings.json
发送数据请求,将请求到的数据中的title
、time
、location
赋值到meeting
变量,participants
赋值到participants
变量,函数需要返回一个Promise
。在js/index.js
中补充formatDate
函数,函数返回字符串类型,将函数传入的的日期字符串格式化为"YYYY-MM-DD"
的形式,例如2024-9-3
转换为2024-09-03
。
js/meetings.json
中的数据说明如下:{ "title": "项目进度会议", "time": "2024-9-3", "location": "会议室A", "participants": [ { "name": "张三", "status": "待确认" }, { "name": "李四", "status": "待确认" } ... ] }
title
: 会议名称。time
: 会议时间。location
: 会议地点。participants
: 参与者列表。每个参与者对象具有以下属性:
name
: 参与者名称。status
: 参与者目前的状态。
说人话:
通过相同文件下存过的数据,获取并传入与处理的操作
本题作者想说
答案:
const fetchMeetingData = () => {
// TODO: 待补充代码
return fetch('js/meetings.json').then(res => res.json().then((res) => {
meeting.value["title"] = res.title
meeting.value["time"] = res.time
meeting.value["location"] = res.location
participants.value = res.participants
}))
};
const formatDate = (dateStr) => {
// TODO: 待补充代码
// console.log(dateStr)
if (!dateStr) return []
let arrDate = dateStr.split("-")
if (Number(arrDate.at(2)) < 10) {
arrDate[2] = "0" + arrDate[2]
}
if (Number(arrDate.at(1)) < 10) {
arrDate[1] = "0" + arrDate[1]
}
return arrDate.join("-")
};
作者自我解释版:
const fetchMeetingData = () => {
// TODO: 待补充代码
// 发送请求,类似本题是,向同文件下的数据发送请求,所以使用fetch来获取
// .then即请求之后,将请求结果定义为res,再将res变成字符串结构,将获取到的结果再次.then
return fetch('js/meetings.json').then(res => res.json().then((res) => {
// 经过打印meeting后,展示 "RefImpl {__v_isShallow: false, dep: Map(1), __v_isRef: true, _rawValue: {…}, _value: Proxy(Object)}"
// 这就必须要把数据存到.value中
console.log(meeting);
// 经打印meeting.value后,展示"Proxy(Object) {}"
// 这就说明。不仅要存到.value中,还要定义一些属性以供存储
console.log(meeting.value)
// 经打印res后,展示"{title: '项目进度会议', time: '2024-9-3', location: '会议室A', participants: Array(10)}"
// 这个数组非常的单纯,所以就不需要使用.value了
console.log(res);
// 将title存入
meeting.value["title"] = res.title
// 将time存入
meeting.value["time"] = res.time
// 将location存入
meeting.value["location"] = res.location
// 经打印participants后,展示"RefImpl {__v_isShallow: false, dep: undefined, __v_isRef: true, _rawValue: Array(0), _value: Proxy(Array)}"
// 跟meeting一样,接着找.value
console.log(participants);
// 经打印participants.value后,展示"Proxy(Array) {}"
// 至于要不要再定义属性,还要看一看传入它的需不需要属性
console.log(participants.value);
// 经打印res.participants后,展示"[{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]"
// 这些都是一系列的数组,用不到属性,所以就不需要定义属性
console.log(res.participants);
// 将participants存入
participants.value = res.participants
}))
};
const formatDate = (dateStr) => {
// TODO: 待补充代码
// 本部分其实就是要把"2024-9-3"转化成"2024-09-03"
// 经打印dateStr后,值得注意的是,有两个dateStr,这就导致当我们直接使用split的时候,会报错
// 这就说明可能formatDate要比fetchMeetingData执行的还要早
// 所以在当fetchMeetingData获取到这个值之前可能dateStr就是undefined,这是个注意点
// 在当fetchMeetingData获取到这个值之后,发现就是"2024-9-3"
console.log(dateStr)
// 为了避免之前的undefined影响我们的操作,我们就需要对其设定一个限制,将dateStr返回成一个空数组
if (!dateStr) return []
// 这时就可以使用split等数组操作
// 如果此时数据传过来了,那么我们就要通过split将"2024-9-3"拆成[2024],[9],[3]
let arrDate = dateStr.split("-")
// 这时我们就可以对拆完之后的数组进行操作了
// [第0个属性],[第1个属性],[第2个属性]
// 将数组中第2个属性(这里指的是[3])转换为数字类型,并判断他是否小于10
if (Number(arrDate.at(2)) < 10) {
// 如果小于10,则在它之前加一个字符串0
arrDate[2] = "0" + arrDate[2]
}
// 同理,将第1个属性(这里指的是[9])相同的转化
if (Number(arrDate.at(1)) < 10) {
arrDate[1] = "0" + arrDate[1]
}
// 此时就已经有了转化后的数组,可是此时还是[2024],[09],[03]的格式
// 时是我们就需要将这个数组以"-"为连接拼接起来形成一个字符串
return arrDate.join("-")
// 这时返回的就是"2024-09-03"了
};
感谢观看此篇文章,谢谢大家的支持,本片文章只是我自己学习的历程,有些写的不好地方欢迎大家交流改动。
长路漫漫,我们还需努力!