当前位置: 首页 > article >正文

算法刷题 JavaScript 工具手册

文章目录算法刷题 JavaScript 工具手册一、Array 数组常用操作1.1 尾部插入或者删除元素 push / pop1.2 头部插入或者删除元素 unshift/shift1.3 返回一个新数组 map1.4 过滤数组filter1.5 把数组压缩成一个值reduce1.6 原数组就地排序sort1.7 从数组中截取一段并返回新数组 slice1.8 插入替换删除原数组splice二、Map 映射常用操作2.1 创建一个映射2.2 添加一条映射 set2.3 根据 key 值找到 value get2.4 判断这条映射是否存在 has2.5 根据 key值删除这条映射 delete2.6 获取映射条数 size2.7 清空映射 clear2.8 遍历映射三、Set 映射常用操作四、Math 常用函数4.1 取整函数 Math.floor() 向下取整4.2 取整函数 Math.ceil() 向上取整4.3 四舍五入 Math.round()4.4 取最大值 取最小值 Math.max() Math.min()4.5 取绝对值 Math.abs()五、字符串操作5.1 获取字符串长度5.2 字符串是否包含某个字符5.3 字符串的截取5.4 字符串的替换,替换第一个和全局替换5.5 字符串分割 split5.5 字符串拼接 join5.6 大小写转换5.7 去空格算法刷题 JavaScript 工具手册一、Array 数组常用操作1.1 尾部插入或者删除元素 push / poparr.push(x)// 尾部插入arr.pop()// 删除尾部返回值:push 返回的是数组的长度pop 返回的是删除的那个元素举例如下:constarr[1,2,3,4,5,6,7,8,9,10];console.log(arr);arr.push(11);console.log(arr);arr.pop();console.log(arr);console.log(arr.push(12));console.log(arr.pop());输出结果如下:[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ] [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] 11 12首先加入 11,然后抛出 11,加入 12,打印的是数组的长度,值为 11,取到的抛出的元素 121.2 头部插入或者删除元素 unshift/shiftarr.unshift(x)// 头部插入arr.shift()// 删除头返回值:unshift 返回的是数组的长度shift 返回的是删除的那个元素举例如下:arr.unshift(0);console.log(arr);arr.shift();console.log(arr);console.log(arr.unshift(-1));console.log(arr.shift());输出结果如下:[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] 11 -11.3 返回一个新数组 maparr.map(xx*2)回调函数传入参数:arr.map((item, index, array) {})参数含义item当前元素index当前下标array原数组举例说明:constarr[10,20,30]arr.map((item,index,array){console.log(item,index,array)})输出100[10,20,30]201[10,20,30]302[10,20,30]思考:回调函数也就是我们给 map 传入了一个函数,map 中帮我实现很多东西,而从拿到了某些参数,我们再使用以普通函数为例的模拟:functionmyMapT,U(arr:T[],callback:(item:T,index:number,array:T[])U):U[]{constresult:U[][]for(leti0;iarr.length;i){constitemarr[i]constmappedcallback(item,i,arr)result.push(mapped)}returnresult}callback 就是那个函数,我们传入的函数就是对应给的这里因为这个只是普通函数的模拟,不考虑第一个传入的参数 原数组arr,真是实现使用了原型原型链,第一个参数arr 并不是作为参数传入,而是作为 this 绑定到函数内部返回值:返回一个新数组举例如下:constarr1[1,2,3];constarr2arr1.map(xx*2);console.log(arr2);输出结果如下:[2,4,6]1.4 过滤数组filter传入参数:同 map返回值:返回一个新数组举例如下:取一个数组的奇数,组成一个新的数组constarr3[1,2,3,4,5,6,7,8,9,10];constarr4arr.filter(xx%2!0);console.log(arr4);输出结果如下:[1,3,5,7,9]filter 和 map 的区别?return 的意义不同举例来说:constarr[1,2,3,4]arr.map(xx2)[false,false,true,true]arr.filter(xx2)[3,4]只保存true项1.5 把数组压缩成一个值reduce传入参数:arr.reduce((acc, cur, index, array) { return 新的acc }, 初始值)参数含义acc累加器上一次的结果cur当前元素index下标array原数组返回值:返回一个值,reduce 的返回值类型 acc累加器的类型每一轮 return 的值 下一轮的 acc举例如下:数组求和constarr[10,20,30];constresultarr.reduce((acc,cur){returnacccur;},5);console.log(result);输出结果如下:651.6 原数组就地排序sort默认是字典序排序:[3, 1, 10, 2].sort() 结果是[1, 10, 2, 3]传入参数:arr.sort((a,b)...)传入一个比较函数,比较函数里面有两个参数(a,b),比较的是 a 和 b的相对顺序,类似于不断的拿出来两个值,不断比较sort 的规则,sort 不关心类型只关心你 return 的值是不是负数 / 正数 / 0,意味着小的在前 0 → a 在前 0 → b 在前 0 → 不变根据 js 引擎,底层的使用什么排序算法不一定返回值:返回就是原数组,因为修改是原地修改原数组举例如下:constarr[8,5,1,2,3,66,44,55];arr.sort((a,b)a-b);console.log(arr);arr.sort((a,b){returnb-a});console.log(arr);输出结果如下:[1,2,3,5,8,44,55,66][66,55,44,8,5,3,2,1]1.7 从数组中截取一段并返回新数组 slice传入参数arr.slice(start,end)参数含义start起始下标包含end结束下标不包含返回值:返回新数组举例如下:constarr[1,2,3,4,5]arr.slice(1,4)输出结果如下:[2,3,4]从 index1 开始包含到 index4 结束不包含常见用法:1.复制数组const copy arr.slice() 等价于, const copy [...arr]2.截取到末尾arr.slice(2)从 index2 到最后3.取最后两个元素,负数 从后往前数arr.slice(-2)小练习:const arr [1, 2, 3, 4, 5] arr.slice(-3, -1) //结果是 数组长度为 5,-1 对应 4,-2 对应 3,-3 对应 2 arr.slice(-3, -1)就是arr.slice(2, 4) 包含 2 不包含4 [3,4]1.8 插入替换删除原数组splice传入参数:arr.splice(start,deleteCount,...items)start从哪开始动手:开始操作的位置下标deleteCount:删除几个元素…items可选:要插入的新元素,可以不写 / 写多个返回值:注意原数组被修改被删除的元素数组举例如下:1.纯删除arr.splice(1,2)// 从 index1 开始删 2 个2.插入不删除arr.splice(1,0,100)//在 index1 插入 1003.替换arr.splice(1,1,99)删1个 → 再放99二、Map 映射常用操作Map一种“键值对集合”但 key 可以是任意类型,Object 的 key 只能是string / symbol初始化输入输出数据格式[[key,value],[key,value]]2.1 创建一个映射constmapnewMap()2.2 添加一条映射 setmap.set(a, 1) map.set(b, 2)2.3 根据 key 值找到 value getmap.get(a) // 12.4 判断这条映射是否存在 hasmap.has(a) // true2.5 根据 key值删除这条映射 deletemap.delete(a)2.6 获取映射条数 sizemap.size// 元素个数2.7 清空映射 clearmap.clear()2.8 遍历映射1.for…offor(const[key,value]ofmap){console.log(key,value)}2.forEachmap.forEach((value,key){console.log(key,value)})注意:value 在前key 在后三、Set 映射常用操作set 初始化输入输出格式[value,value,value]使用方法同 Map如何给数组去重?constarr[...newSet(nums)]四、Math 常用函数Math.max() Math.min() Math.abs() Math.floor() Math.ceil() Math.round()4.1 取整函数 Math.floor() 向下取整向更小的方向取整Math.floor(3.9)// 3Math.floor(-3.1)// -44.2 取整函数 Math.ceil() 向上取整向更大的方向取整Math.ceil(3.1)// 4Math.ceil(-3.9)// -3 ❗4.3 四舍五入 Math.round()Math.round(3.5)// 4Math.round(3.4)// 34.4 取最大值 取最小值 Math.max() Math.min()Math.max(1,5,3)// 5Math.min(1,5,3)// 14.5 取绝对值 Math.abs()Math.abs(-5) // 5五、字符串操作首先明确,因为字符串是不可变的,所以返回的都是新值5.1 获取字符串长度str.length5.2 字符串是否包含某个字符hello.includes(e) // true5.3 字符串的截取[start, end) 左闭右开hello.slice(1, 4) // ell5.4 字符串的替换,替换第一个和全局替换replace 替换第一个hello.replace(l, x) // hexlo全局替换hello.replaceAll(l, x) // hexxo5.5 字符串分割 split返回值:字符数组a,b,c.split(,) // [a,b,c]5.5 字符串拼接 join[a,b,c].join(-) // a-b-c组合使用实例:hello world.split( ).join(-) // hello-world5.6 大小写转换str.toUpperCase() str.toLowerCase()5.7 去空格str.trim() // 两边 str.trimStart() // 左 str.trimEnd() // 右

相关文章:

算法刷题 JavaScript 工具手册

文章目录 算法刷题 JavaScript 工具手册一、Array 数组常用操作1.1 尾部插入或者删除元素 push / pop1.2 头部插入或者删除元素 unshift/shift1.3 返回一个新数组 map1.4 过滤数组filter1.5 把数组压缩成一个值reduce1.6 原数组就地排序sort1.7 从数组中截取一段并返回新数组 s…...

Visual StudioProfiler对工作流进行热点分析

热点:消耗了绝大部分CPU计算时间(例如超过50%或更高比例)的那部分代码。Visual Studio 中,使用性能探查器(Profiler)在 Visual Studio 中,使用性能探查器(Profiler)进行热…...

bash: mysql: 未找到命令

永久生效(添加到环境变量,推荐)步骤 1:编辑环境变量配置文件bash运行# 编辑~/.bashrc(仅当前用户生效),或/etc/profile(所有用户生效) vim ~/.bashrc步骤 2:添…...

欧意下载okxz.run复制打开 最新地址分享(安卓苹果通用)

欧意下载okxz.run复制打开 最新地址分享(安卓苹果通用)1983年8月18日中午11 - 13点出生的人,其性格、运势与命运有着独特的轨迹。在这个特定的时空点降临世间,他们带着彼时星辰赋予的特质,开启了人生之旅。这类人往往性…...

Java毕业设计基于SpringBoot的中药材管理系统25853136

前言 基于Spring Boot的中药材管理系统适用于中药材企业、中药材批发市场、中药材种植基地等场景,可以满足企业对中药材从采购、入库、存储到销售全过程的管理需求。同时,该系统还可以通过扩展和定制来满足企业的特定需求,如集成更多的支付接…...

动态规划-

斐波那契数列class Solution {public int fib(int n) {int [] nums new int [n1];if (n < 1) {return n;}nums[0]0;nums[1]1;for(int i2;i<n1;i){nums[i]nums[i-1]nums[i-2];}return nums[n];} }爬楼梯class Solution { public int climbStairs(int n) {int[] dp new in…...

英伟达GTC 2026“芯片全家桶”震撼登场,微美全息构建全栈算力创新体系迎风而上

据消息&#xff0c;北京时间 3 月 17 日凌晨&#xff0c;被誉为“AI界春晚”的英伟达&#xff08;NVDA.US&#xff09;GTC大会正式启幕。芯片全家桶上线作为全球 AI 产业受关注的年度时刻之一&#xff0c;今年GTC大会&#xff0c;除AI智能体平台、Rubin Ultra芯片等新技术、新产…...

使用Jsoup爬取豆瓣电影Top250(附Java代码)

在日常开发中&#xff0c;我们经常需要从网页上获取数据&#xff0c;而手动复制粘贴显然太低效。今天我们就来学习如何使用Java的Jsoup库&#xff0c;快速爬取豆瓣电影Top250的片名和评分&#xff0c;只需几十行代码就能搞定。 一、Jsoup简介 Jsoup 是一个开源的Java HTML解析…...

ABB机器人仿真工作站:超便捷教学实训平台

ABB机器人仿真工作站&#xff0c;教学实训平台&#xff0c;提供软件的时候全部模型&#xff0c;压缩成工作站文件&#xff0c;解压即可使用。 提供的是工作站的全部模型。最近发现了一个超赞的ABB机器人仿真工作站教学实训平台&#xff0c;必须来和大家分享一下。对于学习机器人…...

计算其中最大连续 1 的个数

题目给定一个二进制数组 nums &#xff0c; 计算其中最大连续 1 的个数。示例 1&#xff1a;输入&#xff1a;nums [1,1,0,1,1,1] 输出&#xff1a;3 解释&#xff1a;开头的两位和最后的三位都是连续 1 &#xff0c;所以最大连续 1 的个数是 3.示例 2:输入&#xff1a;nums …...

Linux系统基础认知

作为学习者&#xff0c;我仅将所学知识进行系统梳理和总结。如有任何疏漏或错误&#xff0c;敬请指正Linux系统基础认知核心概念内核与发行版 Linux内核是系统的核心组件&#xff0c;由林纳斯托瓦兹于1991年开发。发行版是“内核配套软件”的完整系统&#xff0c;例如Ubuntu、K…...

d3dx10_36.dll文件错误 完全免费下载修复方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…...

DevSecOps平台建设之必备数据库MySQL

MySQL 是最流行的关系型数据库管理系统&#xff0c;在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System&#xff1a;关系数据库管理系统)应用软件之一。在本教程中&#xff0c;会让大家快速掌握 MySQL 的基本知识&#xff0c;并轻松使用 MySQL 数据库…...

django flask+uniapp宠物用品商城领养寄养医疗中心信息管理系统app 小程序_i843n

目录技术选型与架构设计功能模块划分数据模型设计接口开发规范小程序端实现部署与运维方案项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作技术选型与架构设计 后端框架选择Django和Flask的混合架构。…...

自研匹配算法:跨越平台的高效之路

自研模板匹配&#xff0c;形状匹配&#xff0c;方形匹配&#xff0c;圆形匹配&#xff0c;十字匹配&#xff0c;C/C#动态库接口&#xff0c;windows/linux/arm64/aarch64&#xff0c;速度接近halcon在计算机视觉领域&#xff0c;模板匹配、形状匹配等技术是众多应用的基石。今天…...

1393、STM32单片机智能小车倒车入库 侧方停车入库 超声波加红外避障检测入库小车设计(程序+原理图+硬件设计资料+参考论文+参考开题报告+制作详解+元器件清单)

具体详情请看&#xff1a; 1393、STM32单片机智能小车倒车入库 侧方停车入库 超声波加红外避障检测入库小车设计(程序原理图硬件设计资料参考论文参考开题报告制作详解元器件清单)-CSDN博客 演示操作视频讲解如下&#xff1a; https://www.douyin.com/video/7617736020217365…...

GYM106259F

GYM106259F 先排序 这样不用取绝对值 每一场的概率是一样的 一共n*(n-1)/2场 选择n-1 场 每场的贡献就是2/n(a[i]-a[i-1]) 可以前缀和求也可以考虑贡献 这里讲解贡献法 对于i到j 如果选择a[j]-a[i] 我们可以看作a[j]-a[j-1]a[j-1]-a[j-2].......a[i1]-a[i] 如果这么…...

OpenClaw 环境踩坑到头大?国产平替 EasyClaw 全链路实操:部署 + 多平台互联 + Agent 调教 + 自定义技能开发

前言 作为开发者和技术从业者&#xff0c;相信你大概率踩过这些坑&#xff1a;想通过 OpenClaw 搭建个人 AI 自动化助理&#xff0c;光 Node.js、Python、Git 环境配置就折腾了大半天&#xff0c;不是版本冲突就是依赖缺失&#xff1b;好不容易跑通基础流程&#xff0c;想对接…...

2026免费降AI工具性价比排行:穷学生怎么选

2026免费降AI工具性价比排行&#xff1a;穷学生怎么选 月底了&#xff0c;生活费还剩200。论文AI率58%&#xff0c;学校要求降到20%以下才能参加答辩。花不起几百块找人代改&#xff0c;手动改又改不动。 这种情况我太熟了。去年帮学弟处理毕业论文的时候就遇到过类似场景。当时…...

Kotlin的扩展函数与中缀表达式:DSL设计的利器

Kotlin的扩展函数与中缀表达式&#xff1a;DSL设计的利器 Kotlin作为一门现代化的编程语言&#xff0c;凭借其简洁性和灵活性&#xff0c;在开发领域广受欢迎。其中&#xff0c;扩展函数和中缀表达式是Kotlin的两大特色功能&#xff0c;它们不仅提升了代码的可读性&#xff0c…...

220V降5V,30MA封装SOP-8,WD5201应用于小家电消费类线性稳压器

WD5201作为一款高性能能效管理AI芯片&#xff0c;以AI赋能能效调控&#xff0c;以高集成简化设计&#xff0c;以全场景适配打破应用边界&#xff0c;为多行业提供智能、高效、节能的能效管理解决方案&#xff0c;引领能效管理进入智能化新时代。AI智控核心&#xff0c;解锁精准…...

Python的__init_subclass__框架中

Python的__init_subclass__框架&#xff1a;解锁类继承的隐藏能力在Python的面向对象编程中&#xff0c;类继承是一个强大的工具&#xff0c;但你是否知道Python还提供了一个名为__init_subclass__的特殊方法&#xff1f;这个隐藏在类构造机制中的钩子方法&#xff0c;能够让你…...

c语言之宏定义处理编译期间判断结构体大小

typedef struct sysparam {int battery; // 电池int flash; // flashint microphone; // 录音 麦克风char sn[24]...

干货合集:9个降AIGC工具测评!全行业通用降AI率必备清单

在当前学术与写作领域&#xff0c;AI生成内容&#xff08;AIGC&#xff09;的广泛应用带来了前所未有的效率提升&#xff0c;但也引发了对原创性与查重率的担忧。无论是学生、研究人员还是职场人士&#xff0c;都面临着一个共同的问题&#xff1a;如何在保持内容质量的同时&…...

Spring Boot 缓存机制与性能分析

Spring Boot 缓存机制与性能分析 在现代高并发应用中&#xff0c;缓存技术是提升系统性能的关键手段之一。Spring Boot作为Java生态中广泛使用的框架&#xff0c;提供了强大的缓存支持&#xff0c;能够显著减少数据库访问压力&#xff0c;优化响应速度。本文将深入探讨Spring …...

探索Comsol中的散射体手性:从基板上的周期性金属阵列到散射光谱多极分解

Comsol散射体手性 基板上的周期性金属阵列 散射光谱多极分解在光学与电磁学领域&#xff0c;理解散射体的手性特性以及相关的光谱分析至关重要。今天咱们就通过Comsol这个强大工具&#xff0c;来深入研究基板上周期性金属阵列的散射体手性以及散射光谱多极分解。 基板上的周期性…...

高性能密码学库

1、非修改序列算法这些算法不会改变它们所操作的容器中的元素。1.1 find 和 find_iffind(begin, end, value)&#xff1a;查找第一个等于 value 的元素&#xff0c;返回迭代器&#xff08;未找到返回 end&#xff09;。find_if(begin, end, predicate)&#xff1a;查找第一个满…...

JavaScript性能优化实战胖让

JavaScript性能优化实战技术文章大纲 性能优化的核心原则 减少代码执行时间 降低内存占用 优化网络请求 提升用户体验 代码层面的优化 避免全局变量污染&#xff0c;使用模块化或闭包 减少DOM操作&#xff0c;批量更新或使用文档片段 使用事件委托减少事件监听器数量 优化循环结…...

Q:PCB不显示丝印

A:没有显示丝印可能是隐藏了&#xff0c;按shifts...

python-flask电商购物商城个性化推荐系统

目录需求分析与系统设计数据采集与处理推荐算法实现系统集成与优化部署与监控项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作需求分析与系统设计 明确电商平台的核心需求&#xff0c;包括用户行为追踪…...