【JavaScript——函数编写】谁最长(蓝桥杯真题
背景介绍
如果给你若干个数组,你能很快判断出最长的都有哪些吗? 本题需要在已提供的基础项目中,使用 JS 知识封装一个函数,该函数可以接收若干个一维数组作为参数,并最终返回长度最大的数组集合。
准备步骤
开始答题前,需要先打开本题的项目代码文件夹,目录结构如下:
代码语言:javascript代码运行次数:0运行复制├── index.html
└── js
└── index.js
其中:
js/index.js
是页面功能实现的逻辑代码。index.html
包含用于检测函数的代码。
注意:打开环境后发现缺少项目代码,请手动键入下述命令进行下载:
代码语言:javascript代码运行次数:0运行复制cd /home/project
wget .zip && unzip 08.zip && rm 08.zip
在浏览器中预览 index.html
页面,显示如下:
当前的几种传参情况,并未返回正确结果。
目标效果
请在 js/index.js
文件中,补全函数 getMaxArrays
中的代码,最终实现根据不同的传参情况,返回预期数组的需求。具体需求如下:
(1)传入的参数列表中,所有参数皆为数组的情况下:
1. 若长度最大的数组有一到多个,则最终返回这些数组的集合(即二维数组)。
例如:
代码语言:javascript代码运行次数:0运行复制var a1 = [12, 2];
var a2 = [34, 2, 3];
var a3 = [23, 12, 3];
var newA = getMaxArrays(a1, a2, a3);
console.log(newA); // => [[34, 2, 3],[23, 12, 3]];
var newA = getMaxArrays(a3);
console.log(newA); // => [[23, 12, 3]];
2. 若所有数组长度相同,则返回空数组(即:[]
)。
例如:
代码语言:javascript代码运行次数:0运行复制var a2 = [34, 2, 3];
var a3 = [23, 12, 3];
var newA = getMaxArrays(a2, a3);
console.log(newA); // => [];
3. 其他情况则返回空数组(即:[]
)。
要求规定
- 请勿修改
js/index.js
文件外的任何内容。 - 请严格按照考试步骤操作,切勿修改考试默认提供项目中的文件名称、文件夹路径、class 名、id 名、图片名等,以免造成无法判题通过。
判分标准
- 本题完全实现题目目标得满分,否则得 0 分。
通关代码✔️
代码语言:javascript代码运行次数:0运行复制/**
* 封装函数,传入任意数量的数组,返回长度最大的数组集合
*/
const getMaxArrays = (...arrays) => {
// TODO:待补充代码
if(arrays.some(items=>!Array.isArray(items))){
return []
}
if(arrays.length == 0){
return []
}
if(arrays.every(arr=>arr.length==arrays[0].length)){
return []
}
const max = Math.max(...arrays.map(item=>item.length))
return arrays.filter(items=>items.length == max)
};
module.exports = getMaxArrays; //请勿删除