JavaScript 数组和字符串方法详解
一、数组方法
数组方法是操作数组的核心工具,分为修改原数组和返回新数组两类。
1. 常用修改原数组的方法
| 方法 | 参数 | 返回值 | 说明 | 示例 | 
|---|---|---|---|---|
push | ...items | 新长度 | 末尾添加元素 | arr.push(4) → [1,2,3,4] | 
pop | 无 | 删除的元素 | 删除最后一个元素 | arr.pop() → 3(原数组变[1,2]) | 
shift | 无 | 删除的元素 | 删除第一个元素 | arr.shift() → 1(原数组变[2,3]) | 
unshift | ...items | 新长度 | 开头添加元素 | arr.unshift(0) → [0,1,2,3] | 
splice | (start, deleteCount, ...items) | 删除的元素数组 | 删除/替换元素 | arr.splice(1,1,'a') → [2](原数组变[1,'a',3]) | 
sort | (compareFunction) | 排序后的数组 | 原地排序(默认按Unicode排序) | arr.sort((a,b) => a-b) 升序排列 | 
reverse | 无 | 反转后的数组 | 反转数组元素顺序 | arr.reverse() → [3,2,1] | 
2. 返回新数组的方法
| 方法 | 参数 | 返回值 | 说明 | 示例 | 
|---|---|---|---|---|
concat | ...arrays/values | 新数组 | 合并数组 | arr.concat([4,5]) → [1,2,3,4,5] | 
slice | (start, end) | 截取的新数组 | 浅拷贝指定区间元素 | arr.slice(1,3) → [2,3](原数组不变) | 
map | (element, index, array) => {} | 新数组 | 遍历并返回处理后的元素 | arr.map(x => x*2) → [2,4,6] | 
filter | 回调函数(返回布尔值) | 新数组 | 筛选满足条件的元素 | arr.filter(x => x>1) → [2,3] | 
3. 高阶函数与工具方法
| 方法 | 参数 | 返回值 | 说明 | 
|---|---|---|---|
forEach | 回调函数 | undefined | 遍历数组,无返回值 | 
reduce | (acc, cur, index, arr) => {}, initialValue | 累积值 | 从左到右累积计算 | 
find | 回调函数 | 第一个匹配元素 | 查找满足条件的元素(ES6) | 
findIndex | 回调函数 | 第一个匹配的索引 | 类似find,返回索引(ES6) | 
some | 回调函数 | 布尔值 | 是否有元素满足条件 | 
every | 回调函数 | 布尔值 | 是否所有元素满足条件 | 
flat | (depth) | 新数组 | 扁平化嵌套数组(ES2019) | 
二、字符串方法
字符串方法均不修改原字符串(字符串不可变),返回新字符串。
1. 常用方法
| 方法 | 参数 | 返回值 | 说明 | 示例 | 
|---|---|---|---|---|
slice | (start, end) | 子字符串 | 类似数组的slice | 'abc'.slice(1,3) → 'bc' | 
substring | (start, end) | 子字符串 | 不接受负数参数 | 'abc'.substring(1,3) → 'bc' | 
indexOf | (searchValue, fromIndex) | 索引 | 查找子串位置,不存在返回-1 | 'abc'.indexOf('b') → 1 | 
includes | (searchString) | 布尔值 | 是否包含子串(ES6) | 'abc'.includes('b') → true | 
split | (separator, limit) | 数组 | 按分隔符分割字符串 | 'a,b,c'.split(',') → ['a','b','c'] | 
replace | (old, new) | 新字符串 | 替换第一个匹配项(支持正则) | 'abc'.replace('b','x') → 'axc' | 
toUpperCase | 无 | 新字符串 | 全大写 | 'abc'.toUpperCase() → 'ABC' | 
trim | 无 | 新字符串 | 去除两端空格(ES5) | ' a '.trim() → 'a' | 
2. 其他实用方法
| 方法 | 参数 | 返回值 | 说明 | 
|---|---|---|---|
startsWith | (searchString) | 布尔值 | 是否以子串开头(ES6) | 
endsWith | (searchString) | 布尔值 | 是否以子串结尾(ES6) | 
charAt | (index) | 字符 | 获取指定位置字符 | 
repeat | (count) | 新字符串 | 重复字符串(ES6) | 
padStart | (length, padString) | 新字符串 | 前补全到指定长度(ES2017) | 
三、核心区别与注意点
-  
数组 vs 字符串:
-  
数组方法可能修改原数组(如
push,splice),字符串方法永不修改原数据。 -  
字符串可通过
split转数组,数组通过join转字符串。 
 -  
 -  
易错点:
-  
splicevsslice:前者修改原数组,后者不修改。 -  
substr(start, length)(已废弃) vssubstring(start, end)。 -  
replace默认只替换第一个匹配项,需用正则/g全局替换。 
 -  
 
相关文章:
JavaScript 数组和字符串方法详解
一、数组方法 数组方法是操作数组的核心工具,分为修改原数组和返回新数组两类。 1. 常用修改原数组的方法 方法参数返回值说明示例push...items新长度末尾添加元素arr.push(4) → [1,2,3,4]pop无删除的元素删除最后一个元素arr.pop() → 3(原数组变[1,…...
达梦数据库系列之Mysql项目迁移为达梦项目
达梦数据库系列之Mysql项目迁移为达梦项目 1 达梦数据库安装及MySql数据迁移2 SpringBoot项目迁移2.1 驱动包引入2.2 驱动类配置2.3 数据源配置2.4 flowable迁移2.4.1 异常问题2.4.2 解决 3 迁移常见问题3.1 不是 GROUP BY 表达式3.1.1 dm.ini 开启Mysql兼容模式3.1.2 修改动态…...
10个实用IntelliJ IDEA插件
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 以下是为提升开发效率推荐的10个实用IntelliJ IDEA插件,涵盖代码质量、效率工具及热门框架支持: 一、代码质量与规范 SonarLint 实时…...
10分钟从零开始搭建机器人管理系统(飞算AI)
1. 安装插件 https://www.feisuanyz.com/ 2. Intellij IDEA中运行 创建一个BS架构的机器人远程操控系统,具备机器人状态及位置实时更新,可以实现机器人远程遥控,可以对机器人工作日志进行统计分析,以及其它管理系统的常用功能3…...
[自动驾驶-传感器融合] 多激光雷达的外参标定
文章目录 引言外参标定原理ICP匹配示例参考文献 引言 多激光雷达系统通常用于自动驾驶或机器人,每个雷达的位置和姿态不同,需要将它们的数据统一到同一个坐标系下。多激光雷达外参标定的核心目标是通过计算不同雷达坐标系之间的刚性变换关系(…...
怎么让呼叫中心支持高并发
基于FreeSWITCH的呼叫中心系统并发性能优化指南 在呼叫中心系统建设中,高并发处理能力是衡量系统稳定性和效率的核心指标。作为开源软交换平台的代表,FreeSWITCH凭借其线程模型和模块化架构,天然适合高并发场景。然而,实际应用中仍…...
Elasticsearch简单学习
1、依赖的导入 <!--ES依赖--> <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency>2、客户端链接 RestHighLevelClient client new RestHigh…...
就像BGP中的AS_PATH一样,无论路途多远,我愿意陪你一起走——基于华为ENSP的BGP的路由负载均衡及过滤深入浅出
本篇技术博文摘要 🌟 本文内容涵盖了BGP负载均衡的基本概念、配置技巧和在实际网络中的应用,包括如何在华为ENSP上实现负载均衡和路由过滤。通过配置BGP的前缀列表、ACL以及路由过滤策略,可以实现网络流量的精确控制和优化,提高网…...
valgrind 检测多线程 bug,检测 并发 bug concurrent bug parallel bug
valgrind --toolhelgrind ./your_program 如果检测的对象是大型程序,可以设定仅在某些函数中开启 valgrind 的检测: Valgrind 提供了一些客户请求(client requests),可以在代码中插入特定的宏来控制 Valgrind 的行为。…...
游戏引擎学习第135天
仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾 game_asset.cpp 的创建 在开发过程中,不使用任何现成的游戏引擎或第三方库,而是直接基于 Windows 进行开发,因为 Windows 目前仍然是游戏的标准平台,因此首先在这个环境中进行…...
异步操作返回原始上下文
是什么? 在讨论同步上下文执行回调的概念时,我们首先需要了解一些基本概念:同步与异步操作、上下文以及回调函数。 同步与异步操作: 同步操作是指代码按照顺序依次执行,每个操作必须等待前一个操作完成才能开始。这便…...
区块链中的数字签名:安全性与可信度的核心
数字签名是区块链技术的信任基石,它像区块链世界的身份证和防伪标签,确保每一笔交易的真实性、完整性和不可抵赖性。本文会用通俗的语言,带你彻底搞懂区块链中的数字签名! 文章目录 1. 数字签名是什么?从现实世界到区块…...
vulnhub渗透日记23:bulldog
声明 文中涉及操作均来自靶机虚拟环境,禁止用于真实环境,任何未经授权的渗透测试都是违法行为! 开搞 首先nmap扫描目标机开放端口和服务 访问80端口 扫目录撒 发现登录口 点击web-shell提示登录后才能使用 /dev/下面查看网页源码发现村咋h…...
macOS - 使用 tmux
文章目录 安装 tmux使用更多快捷键说明 安装 tmux brew install tmux使用 在终端输入 tmux 进入 tmux 界面,然后 输入 Control Option B 进入交互模式 输入 % 左右分栏," 上下分割 上一个窗格:{,下一个:} PS…...
Armbian: 轻量级 ARM 设备专用 Linux 发行版全面解析
引言 在嵌入式开发和物联网(IoT)领域,选择合适的操作系统至关重要。对于 Raspberry Pi、Orange Pi、Banana Pi 以及 Rockchip、Amlogic、Allwinner 等 ARM 平台上的单板计算机(SBC),一个高效、轻量级并且易…...
微服务通信:用gRPC + Protobuf 构建高效API
引言 在微服务架构中,服务之间的通信是系统设计的核心问题之一。传统的RESTful API虽然简单易用,但在性能、类型安全和代码生成等方面存在一定的局限性。gRPC作为一种高性能、跨语言的RPC框架,结合Protobuf(Protocol Buffers&…...
Spring Boot 整合 JMS-ActiveMQ,并安装 ActiveMQ
1. 安装 ActiveMQ 1.1 下载 ActiveMQ 访问 ActiveMQ 官方下载页面,根据你的操作系统选择合适的版本进行下载。这里以 Linux 系统,Java环境1.8版本为例,下载 apache-activemq-5.16.7-bin.tar.gz。 1.2 解压文件 将下载的压缩包解压到指定目…...
容器 /dev/shm 泄漏学习
容器 /dev/shm 泄漏的介绍 在容器环境中,/dev/shm 是一个基于 tmpfs 的共享内存文件系统,通常用于进程间通信(IPC)和临时数据存储。由于其内存特性,/dev/shm 的大小是有限的,默认情况下 Docker 容器的 /de…...
Spring Boot 3.x 基于 Redis 实现邮箱验证码认证
文章目录 依赖配置开启 QQ 邮箱 SMTP 服务配置文件代码实现验证码服务邮件服务接口实现执行流程 依赖配置 <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr…...
车载测试:智能座舱测试中多屏联动与语音交互的挑战
智能座舱作为汽车智能化发展的核心,集成了多屏联动和语音交互功能,为驾驶员和乘客提供更便捷的体验。然而,这些功能的测试面临诸多挑战,包括多屏同步性、噪声干扰和复杂场景的处理。本文将详细分析这些挑战,探讨测试方…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu  2、Hello World fn main() { println…...
