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

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 字符串

    • 数组方法可能修改原数组(如pushsplice),字符串方法永不修改原数据。

    • 字符串可通过split转数组,数组通过join转字符串。

  • 易错点

    • splice vs slice:前者修改原数组,后者不修改。

    • substr(start, length)(已废弃) vs substring(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匹配示例参考文献 引言 多激光雷达系统通常用于自动驾驶或机器人,每个雷达的位置和姿态不同,需要将它们的数据统一到同一个坐标系下。多激光雷达外参标定的核心目标是通过计算不同雷达坐标系之间的刚性变换关系&#xff08…...

怎么让呼叫中心支持高并发

基于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的路由负载均衡及过滤深入浅出

本篇技术博文摘要 &#x1f31f; 本文内容涵盖了BGP负载均衡的基本概念、配置技巧和在实际网络中的应用&#xff0c;包括如何在华为ENSP上实现负载均衡和路由过滤。通过配置BGP的前缀列表、ACL以及路由过滤策略&#xff0c;可以实现网络流量的精确控制和优化&#xff0c;提高网…...

valgrind 检测多线程 bug,检测 并发 bug concurrent bug parallel bug

valgrind --toolhelgrind ./your_program 如果检测的对象是大型程序&#xff0c;可以设定仅在某些函数中开启 valgrind 的检测&#xff1a; Valgrind 提供了一些客户请求&#xff08;client requests&#xff09;&#xff0c;可以在代码中插入特定的宏来控制 Valgrind 的行为。…...

游戏引擎学习第135天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾 game_asset.cpp 的创建 在开发过程中&#xff0c;不使用任何现成的游戏引擎或第三方库&#xff0c;而是直接基于 Windows 进行开发&#xff0c;因为 Windows 目前仍然是游戏的标准平台&#xff0c;因此首先在这个环境中进行…...

异步操作返回原始上下文

是什么&#xff1f; 在讨论同步上下文执行回调的概念时&#xff0c;我们首先需要了解一些基本概念&#xff1a;同步与异步操作、上下文以及回调函数。 同步与异步操作&#xff1a; 同步操作是指代码按照顺序依次执行&#xff0c;每个操作必须等待前一个操作完成才能开始。这便…...

区块链中的数字签名:安全性与可信度的核心

数字签名是区块链技术的信任基石&#xff0c;它像区块链世界的身份证和防伪标签&#xff0c;确保每一笔交易的真实性、完整性和不可抵赖性。本文会用通俗的语言&#xff0c;带你彻底搞懂区块链中的数字签名&#xff01; 文章目录 1. 数字签名是什么&#xff1f;从现实世界到区块…...

vulnhub渗透日记23:bulldog

声明 文中涉及操作均来自靶机虚拟环境&#xff0c;禁止用于真实环境&#xff0c;任何未经授权的渗透测试都是违法行为&#xff01; 开搞 首先nmap扫描目标机开放端口和服务 访问80端口 扫目录撒 发现登录口 点击web-shell提示登录后才能使用 /dev/下面查看网页源码发现村咋h…...

macOS - 使用 tmux

文章目录 安装 tmux使用更多快捷键说明 安装 tmux brew install tmux使用 在终端输入 tmux 进入 tmux 界面&#xff0c;然后 输入 Control Option B 进入交互模式 输入 % 左右分栏&#xff0c;" 上下分割 上一个窗格&#xff1a;{&#xff0c;下一个&#xff1a;} PS…...

Armbian: 轻量级 ARM 设备专用 Linux 发行版全面解析

引言 在嵌入式开发和物联网&#xff08;IoT&#xff09;领域&#xff0c;选择合适的操作系统至关重要。对于 Raspberry Pi、Orange Pi、Banana Pi 以及 Rockchip、Amlogic、Allwinner 等 ARM 平台上的单板计算机&#xff08;SBC&#xff09;&#xff0c;一个高效、轻量级并且易…...

微服务通信:用gRPC + Protobuf 构建高效API

引言 在微服务架构中&#xff0c;服务之间的通信是系统设计的核心问题之一。传统的RESTful API虽然简单易用&#xff0c;但在性能、类型安全和代码生成等方面存在一定的局限性。gRPC作为一种高性能、跨语言的RPC框架&#xff0c;结合Protobuf&#xff08;Protocol Buffers&…...

Spring Boot 整合 JMS-ActiveMQ,并安装 ActiveMQ

1. 安装 ActiveMQ 1.1 下载 ActiveMQ 访问 ActiveMQ 官方下载页面&#xff0c;根据你的操作系统选择合适的版本进行下载。这里以 Linux 系统&#xff0c;Java环境1.8版本为例&#xff0c;下载 apache-activemq-5.16.7-bin.tar.gz。 1.2 解压文件 将下载的压缩包解压到指定目…...

容器 /dev/shm 泄漏学习

容器 /dev/shm 泄漏的介绍 在容器环境中&#xff0c;/dev/shm 是一个基于 tmpfs 的共享内存文件系统&#xff0c;通常用于进程间通信&#xff08;IPC&#xff09;和临时数据存储。由于其内存特性&#xff0c;/dev/shm 的大小是有限的&#xff0c;默认情况下 Docker 容器的 /de…...

Spring Boot 3.x 基于 Redis 实现邮箱验证码认证

文章目录 依赖配置开启 QQ 邮箱 SMTP 服务配置文件代码实现验证码服务邮件服务接口实现执行流程 依赖配置 <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr…...

车载测试:智能座舱测试中多屏联动与语音交互的挑战

智能座舱作为汽车智能化发展的核心&#xff0c;集成了多屏联动和语音交互功能&#xff0c;为驾驶员和乘客提供更便捷的体验。然而&#xff0c;这些功能的测试面临诸多挑战&#xff0c;包括多屏同步性、噪声干扰和复杂场景的处理。本文将详细分析这些挑战&#xff0c;探讨测试方…...

跨平台图形API实战选型:从Vulkan、DirectX到Metal与WebGPU的架构抉择

1. 图形API的演变与现状 十年前我刚入行时&#xff0c;OpenGL还是图形开发的主流选择。记得第一次在Ubuntu上配置GLFW环境就花了整整两天&#xff0c;而现在Vulkan只需要几行命令就能跑起来。这种变化背后是GPU架构的革命性演进——从固定功能管线到可编程着色器&#xff0c;再…...

腾讯混元调用代码实践

目录 查看资源是否用尽&#xff1a; ai3d的资源包&#xff0c;可以免费领取 api调用实例&#xff0c;亲测ok&#xff1a; 查看资源是否用尽&#xff1a; https://console.cloud.tencent.com/hunyuan/packages ai3d的资源包&#xff0c;可以免费领取 https://console.clou…...

终极指南:BG3 Mod Manager让你的《博德之门3》模组管理变得简单高效

终极指南&#xff1a;BG3 Mod Manager让你的《博德之门3》模组管理变得简单高效 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 你是否曾经因为《博…...

嵌入式系统学习路径:从硬件基础到系统架构的认知跃迁

1. 从“螺丝钉”到“系统设计师”&#xff1a;嵌入式学习的认知跃迁大家好&#xff0c;我是老张&#xff0c;一个在嵌入式行业里摸爬滚打了十几年的老兵。今天我们不聊具体的代码&#xff0c;也不讲某个芯片的寄存器配置&#xff0c;我想和大家聊聊一个更根本的问题&#xff1a…...

如何用QueryExcel轻松应对海量Excel文件搜索难题?免费工具让数据查找变得简单快速

如何用QueryExcel轻松应对海量Excel文件搜索难题&#xff1f;免费工具让数据查找变得简单快速 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 面对堆积如山的Excel文件&#xff0c;你是否曾为查找某个…...

从STK仿真到链路决策:低轨卫星网络静态拓扑构建实战解析

1. 低轨卫星网络静态拓扑基础认知 第一次接触卫星网络拓扑时&#xff0c;我被各种专业术语绕得头晕。直到把STK软件里的卫星模型调出来&#xff0c;看着那些在三维空间规律运转的小圆点&#xff0c;才真正理解什么是静态拓扑。简单来说&#xff0c;就是在不考虑卫星实时运动的情…...

SISSO 终极指南:数据驱动建模的强大工具

SISSO 终极指南&#xff1a;数据驱动建模的强大工具 【免费下载链接】SISSO A data-driven method combining symbolic regression and compressed sensing for accurate & interpretable models. 项目地址: https://gitcode.com/gh_mirrors/si/SISSO SISSO&#xf…...

RT-Thread Nano串口控制台移植:GD32F470实现rt_kprintf打印与调试

1. 项目概述与核心目标上次我们成功把 RT-Thread Nano 内核搬到了梁山派 GD32F470 开发板上&#xff0c;让这块高性能的 MCU 跑起了实时任务调度。但光有内核&#xff0c;就像给电脑装好了操作系统却没法敲命令、看输出&#xff0c;调试和交互起来非常别扭。官方 Nano 包的精髓…...

顶伯知识竞赛系统 · 核心功能列表

&#x1f680; 顶伯知识竞赛系统 核心功能列表专业 高效 让知识竞赛组织更简单&#x1f3af; 核心优势速览⏱️ 高效&#xff1a;传统方式2-3天的准备工作&#xff0c;2-3小时完成&#x1f3af; 精准&#xff1a;系统自动计分、自动判定抢答&#xff0c;零误差&#x1f3a8;…...

大模型长对话记忆难题:LightMem轻量记忆系统原理与实战

1. 项目概述&#xff1a;当大模型遇上“记忆”瓶颈 最近在折腾大语言模型应用时&#xff0c;我遇到了一个挺典型的问题&#xff1a;想让模型记住更多、更长的对话历史&#xff0c;但无论是直接增加上下文窗口&#xff0c;还是用传统的向量数据库做检索增强&#xff0c;都感觉差…...