js笔试面试题5道附答案

/*** 题目1: 解析Cookie字符串转化为对象* 输入:'foo=bar; equation=E%3Dmc%5E2'* 输出:{ foo: 'bar', equation: 'E=mc^2' }* 测试: parseCookie('foo=bar; equation=E%3Dmc%5E2')*/
function parseCookie(str) {} 
/*** 题目2: 找出对象中符合要求的项* 输入: 原始对象:{ a: 1, b: '2', c: 3 }, 筛选条件:x => typeof x === 'string'* 输出:{ 'b': '2' }* 测试: pickBy({ a: 1, b: '2', c: 3 }, x => typeof x === 'string')*/
function pickBy(obj, fn) {}
/*** 题目3: 字符串中划线转驼峰式* 输入: 'this-is-a-selector'* 输出: 'thisIsASelector'* 测试: camelize('this-is-a-selector') === 'thisIsASelector'*/
/*** */
function camelize(str) {}/*** 题目4:合并多个对象* 输入:{ a: [1,2,3], b: { name: 'b'} }, { a: [4], b: { age: 18 } }* 输出:{ a: [1,2,3,4], b:{name:'b', age: 18}}* 测试: merge({ a: [1,2,3], b: { name: 'b'} }, { a: [4], b: { age: 18 } })*/
function merge() {}
/*** 题目5:数组去重* 输入: [1, 2, 1, 3, 4, 1, 2]* 输出: [1,2,3,4]* 测试: handle([1, 2, 1, 3, 4, 1, 2])*/
const handle = (arr) => {}

答案

1.

function parseCookie(cookieString) {const cookieArray = cookieString.split('; ');const cookieObject = {};for (const cookie of cookieArray) {const [key, value] = cookie.split('=');cookieObject[key] = decodeURIComponent(value);}return cookieObject;
}// 测试
const result = parseCookie('foo=bar; equation=E%3Dmc%5E2');
console.log(result); // 输出: { foo: 'bar', equation: 'E=mc^2' }

这个函数首先将输入的Cookie字符串按照分号和空格进行分割,然后将结果存储在一个数组中。接下来,我们遍历数组中的每个Cookie,将其按等号分割为键和值,并将解码后的值存储在一个对象中。最后,返回这个对象。

2.

function pickBy(obj, condition) {const result = {};for (const key in obj) {if (condition(obj[key])) {result[key] = obj[key];}}return result;
}// 测试
const inputObj = { a: 1, b: '2', c: 3 };
const conditionFunc = x => typeof x === 'string';
const outputObj = pickBy(inputObj, conditionFunc);console.log(outputObj); // 输出:{ 'b': '2' }

这个函数首先创建一个空对象result来存储符合条件的键值对。然后,它遍历输入对象的所有键,检查每个键对应的值是否满足条件。如果满足条件,就将键值对添加到结果对象中。最后,返回结果对象。

3.

function camelize(str) {return str.split('-').map((word, index) =>index === 0 ? word : word[0].toUpperCase() + word.slice(1)).join('');
}// 测试
console.log(camelize('this-is-a-selector')); // 输出: 'thisIsASelector'

这个函数首先使用split()方法将输入字符串str拆分为一个包含单词的数组,以-作为分隔符。然后,使用map()方法遍历数组中的每个单词,将第一个单词保持不变,将其他单词的首字母大写。最后,使用join()方法将处理后的单词数组连接成一个字符串。

4.

function merge(obj1, obj2) {const result = { ...obj1, ...obj2 };for (const key in result) {if (Array.isArray(obj1[key]) && Array.isArray(obj2[key])) {result[key] = [...obj1[key], ...obj2[key]];} else if (typeof obj1[key] === 'object' && typeof obj2[key] === 'object') {result[key] = merge(obj1[key], obj2[key]);}}return result;
}const obj1 = { a: [1, 2, 3], b: { name: 'b' } };
const obj2 = { a: [4], b: { age: 18 } };
const mergedObj = merge(obj1, obj2);console.log(mergedObj); // 输出: { a: [1, 2, 3, 4], b: { name: 'b', age: 18 } }

这个函数首先将两个对象合并为一个新对象,然后遍历新对象的键。如果键的值是数组,它会将两个数组合并为一个新数组。如果键的值是对象,它会递归调用merge函数来合并这两个对象。最后,返回合并后的对象。

5.

function handle(arr) {const uniqueArray = [...new Set(arr)];return uniqueArray;
}const inputArray = [1, 2, 1, 3, 4, 1, 2];
const outputArray = handle(inputArray);
console.log(outputArray); // [1, 2, 3, 4]

这个函数使用了JavaScript的Set数据结构来去重,然后将其转换回数组。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/113129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

非平稳信号分析和处理、STFT的瞬时频率研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

jpa 连接sqlserver 发布tomcat报错 SunJSSE

报错信息: java.ext.dirs: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64/jre/lib/ext:/usr/java/packages/lib/ext 20-Oct-2023 16:37:28.074 信息 [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0] com.microsoft.sqlserver…

SpringBoot + MyBatis 在 jar 中可以启动但是 Idea中无法启动的原因

现象 在idea中启动始终卡住,查看线程堆栈发现一直在mybatis的处理过程中,细究了一下堆栈发现mybatis有使用远程方式加载类的情况,并且此时cpu会飙升, 在命令行中使用java -jar 的形式可以正常启动,但是在idea中启动始…

Java架构师分布式搜索架构

目录 1 导学1.1 初识Elasticsearch1.1.1 Elasticsearch的作用1.1.2 ELK技术栈1.1.3 Elasticsearch和lucene1.1.4.为什么不是其他搜索技术?1.1.5.总结2 Elasticsearch快速建立知识体系3 Elasticsearch和MySQL实体建立联系3.1.mapping映射属性3.2 数据分组聚合3.2.1.聚合的种类3…

图书教材经营小程序商城的作用是什么

线下图书教材店非常多,在以前线下店是学生、学者们经常去的场所,每到周末人流不绝,但随着互联网发展以及客户消费升级,如今线下书店人流量非常少,除了头部品牌可以支撑外,中小品牌几乎很难生存。 同时加之…

ssm351校园服务平台管理系统+jsp

项目名称:ssm351校园服务平台管理系统jsp 点击这里进入源码目录 声明: 适用范围: 本文档适用于广泛的学术和教育用途,包括但不限于个人学习、毕业设计和课程设计。免责声明: 特此声明,本文仅供参考学习之用…

最近的工作和生活

大家好,我是记得诚。 聊一聊最近的工作和生活。 不知不觉在管理岗位,快干一年了。技术管理还是比较纯粹,主要还是以解决问题为主,对自己的考验也更大了,要关注更广的技术,也要专注更深的技术细节。 技术…

【SA8295P 源码分析 (四)】51 - QNX NFS Server + Android NFS Client 完整配置

【SA8295P 源码分析】51 - QNX NFS Server + Android NFS Client 完整配置 一、QNX 侧 NFS Server 修改:ip 为 192.168.118.21.1 配置拷贝 nfsd、rpcbind 到 /mnt 目录下1.2 配置 exports1.3 为NFS 共享目录挂载镜像1.4 修 startup.sh 开机自启动 nfsd Server1.5 关闭 QNX 防火…

Kibana开发工具安装

版本说明 名称版本备注kibana kibana-7.7.1-linux-x86_64.tar.gz 安装配置 tar -zxvf kibana-7.7.1-linux-x86_64.tar.gz -C /usr/local/ cd /usr/local/ mv kibana-7.7.1-linux-x86_64/ kibana-7.7.1/ #编辑配置文件,在末尾添加 vim /usr/local/kibana-7.7.1/con…

贝锐花生壳+Fooocus,快速自建可远程访问的SDXL,平替Midjourney

Midjourney、stable diffusion两款AI绘图工具是最近这段时间的热点。不过,事无完美,他们各有一些优缺点。 例如:stable diffusion虽然开源可私有化部署,但操作相对复杂,需要设置各类参数;Midjourney虽然简单…

前端成神之路-CSS(选择器、背景、特性)

前端成神之路-CSS(选择器、背景、特性) 目录 前端成神之路-CSS(选择器、背景、特性) CSS 第二天 1. CSS复合选择器 1.1 后代选择器(重点) 1.2 子元素选择器 1.3 交集选择器 1.4 并集选择器&#xf…

【斗罗二】天梦哥告白冰帝,唐三再返场,雨浩通过冰帝考验,觉醒新武魂

Hello,小伙伴们,我是小郑继续为大家深度解析斗罗大陆2绝世唐门国漫资讯。 斗罗大陆动画第二部绝世唐门第19集已经更新了,全都是霍雨浩与天梦哥在极北之地,吸引冰帝加入造神计划的过程。不仅有天梦哥的爱情宣言告白,唐三也再次限时…

选择最佳的项目管理工具:推荐哪一个?

项目管理工具推荐哪个?Zoho Projects项目管理工具为各类团队提供卓越的项目管理解决方案。 1、全面管理各类团队项目 Zoho Projects是一款全面的项目管理工具,具备简化工作流程和提高团队生产力的功能。无论是软件开发与DevOps,还是人力资源与…

vs中C++编译未生成exe

1、新建空工程&#xff0c;添加main.h文件至“头文件”文件夹中&#xff0c;添加mian函数及实现 2、编译工程未有任何提示&#xff0c;不报错&#xff0c;不生成exe&#xff0c;无法执行 对比新建控制台程序发现.vcxproj文件中引用main.h文件为 无法生成&#xff1a; <I…

大数据精准营销告诉你如何找到对的人?

如今&#xff0c;朋友圈广告已经“稀松平常”&#xff0c;而用户接收到什么样的商品广告&#xff0c;则基本取决于平日里对微信的使用习惯。无独有偶&#xff0c;淘宝、京东等电商平台在网页中弹出的定向品类广告&#xff0c;也是大数据基于用户对于某一商品的搜索行为。 可见&…

图像识别-人脸识别与疲劳检测 - python opencv 计算机竞赛

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是…

磁盘格式化指南:如何正确对磁盘进行分区和初始化?

文章目录 磁盘格式化指南1. 引言1.1 简介1.2 目的 2. 磁盘格式化概述2.1 什么是磁盘格式化&#xff1f;2.2 格式化的作用和意义 3. 常用的磁盘格式化命令3.1 mkfs命令简介3.2 mkfs.ext4命令详解3.2.1 特点和优势3.2.2 使用示例 3.3 mkfs.vfat命令详解3.3.1 特点和优势3.3.2 使用…

读书笔记:Effective C++ 2.0 版,条款15、16、17(operator=返回*this、全赋值、检查this)

条款15: 让operator返回*this的引用 c的设计者bjarne stroustrup想使用户自定义类型尽可能地和固定类型的工作方式相似。所以有重载运算符&#xff0c;类型转换函数、拷贝赋值、拷贝构造函数等。 类c中&#xff0c;缺省版本的operator函数具有如下形式&#xff1a; c& c::…

【现场问题】批量新建工作流的问题

批量建工作流的优势和劣势 关于批量建工作流的优势缺点 关于批量建工作流的优势 不需要手动&#xff0c;直接一键建立&#xff0c;同时节点的批量建立也成功了 缺点 1、机器识别&#xff0c;一次性成形&#xff0c;没有办法手动的去干涉这东西 2、大数据量的表需要单独处理的…

Windows Ubuntu子系统使用USB教程

Windows Ubuntu子系统使用USB教程 Windows Subsystem for Linux (WSL)允许您在Windows上运行Linux。以下指南涉及如何在WSL2中连接和使用USB设备。 WSL版本 在WSL内部运行 uname -a应该显示内核版本为5.10.60.1或更高版本。你需要运行WSL 2发行版本。 USB/IP 客户端工具 在W…