收集帛书碎片

介绍

三叔在外出考古途中无意发现了一份战国帛书,帛书边缘有被明显裁剪过的痕迹,单从帛书片段,提到记录了神秘文物的地点,无奈帛书不完整,为了早日将文物带回博物馆,三叔号召当地村民闷油瓶、王胖子、潘子共同寻找剩余帛书碎片,相约一炷香后再聚。

本题需要在已提供的基础项目中使用 JS 知识封装一个函数,达到收集帛书碎片的要求。

准备

开始答题前,需要先打开本题的项目代码文件夹,目录结构如下:

1
2
3
4
5
6
├── js
│ └── collect-puzzle.js
├── css
│ └── style.css
├── images
└── index.html

其中:

  • index.html 是主页面。
  • css/style.css 是样式文件。
  • images 是图片文件夹。
  • js/collect-puzzle.js 是需要补充代码的 js 文件。

注意:打开环境后发现缺少项目代码,请手动键入下述命令进行下载:

1
2
cd /home/project
wget https://labfile.oss.aliyuncs.com/courses/18213/01.zip && unzip 01.zip && rm 01.zip

在浏览器中预览 index.html 页面,显示如下所示:

初始效果

目标

请在 collect-puzzle.js 文件中补全函数 collectPuzzle 中的代码,返回包含不同帛书碎片的数组,最终拼出完整的战国帛书,需要注意:

  • 同一个人收集的帛书碎片可能是有重复的。
  • 同一组内不同的人收集的帛书碎片也可能是有重复的。
  • 工具函数需要统计所有人获取的不同帛书碎片,而不是帛书碎片数量

例如:

1
2
3
4
5
6
7
8
9
10
11
12
var arr1 = ["灾变", "四时运转", "天象"];
var arr2 = ["四时运转"];

var result1 = collectPuzzle(arr1, arr2);
console.log(result1); // 输出:["灾变","四时运转","天象"]

// 同一组内的拼图不能重复计算
var arr3 = ["灾变", "灾变", "天象"];
var arr4 = ["灾变", "月令禁忌", "天象"];

var result2 = collectPuzzle(arr3, arr4);
console.log(result2); // 输出:["灾变", "天象","月令禁忌"]

上述仅为示例代码,判题时会随机提供数组对该函数功能进行检测。

在题目所提供的数据的情况下,完成后的效果如下:

完成效果

规定

  • 请勿修改 collect-puzzle.js 文件外的任何内容。
  • 请严格按照考试步骤操作,切勿修改考试默认提供项目中的文件名称、文件夹路径、class 名、id 名、图片名等,以免造成无法判题通过。

判分标准

  • 完全实现题目目标得满分,否则得 0 分。

总通过次数: 2017 | 总提交次数: 1962 | 通过率: 100%

难度: 简单 标签: 蓝桥杯, 2023, 省赛, Web 前端, JS 函数封装

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function collectPuzzle(...puzzles) {
// TODO:在这里写入具体的实现逻辑
// 对所有的拼图进行收集,获取不同拼图类型的结果,并返回
console.log(puzzles);
// hashMap 秒了
const hashMap = {}
const result = []
puzzles.forEach(childArr => {
childArr.forEach(item => {
if (!hashMap[item]) {
hashMap[item] = 1
result.push(item)
}
})
})
return result
}