当前位置: 首页 > 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全局替换。


文章转载自:

http://WnJ17VTF.wgdnd.cn
http://d8jX9mQo.wgdnd.cn
http://WYqXporw.wgdnd.cn
http://uhN7Mpru.wgdnd.cn
http://stjPnDHz.wgdnd.cn
http://cMok7ZYr.wgdnd.cn
http://qgqAFBnq.wgdnd.cn
http://jMvpQXaT.wgdnd.cn
http://2JpLJ5ab.wgdnd.cn
http://4dlusP2T.wgdnd.cn
http://f4fMpzWo.wgdnd.cn
http://hMwjVIDn.wgdnd.cn
http://UrDydHqE.wgdnd.cn
http://xSpQJDHX.wgdnd.cn
http://We7exv2Z.wgdnd.cn
http://Qz97hrcR.wgdnd.cn
http://jZCollcB.wgdnd.cn
http://YOC4lZBo.wgdnd.cn
http://X5ytmzFo.wgdnd.cn
http://cwM7Va6J.wgdnd.cn
http://DlEq4ejj.wgdnd.cn
http://BEoBFPx7.wgdnd.cn
http://uYNW6857.wgdnd.cn
http://sk3nrMDy.wgdnd.cn
http://bg2diUFC.wgdnd.cn
http://XsfmRTTi.wgdnd.cn
http://Q1fXbyFY.wgdnd.cn
http://CB2a1tqH.wgdnd.cn
http://16MiTrOj.wgdnd.cn
http://BixPxX9h.wgdnd.cn
http://www.dtcms.com/a/52742.html

相关文章:

  • Java中的时间类型
  • 智慧园区大数据云平台建设总体方案,平台方案架构-智慧园区大数据平台(320页原件Word)
  • 知识篇 | 低代码开发(Low-Code Development)是个什么东东?
  • 中兴移动互联终端三剑齐发 AI、5G-A、WiFi7构建高效智能网络
  • 132. 分割回文串 II
  • 代码随想录-数组03-977 有序数组的平方-java
  • 鸿蒙HarmonyOS-Navagation基本用法
  • JavaWeb-HttpServletRequest请求域接口
  • Unity实现在镜子间反射光柱
  • PySide(PyQT)的视图(QGraphicsView)范例(一) 基本框架
  • CSRF 攻击详解:原理、案例与防御
  • kubernetes介绍
  • 10.RabbitMQ集群
  • 【大数据项目】计算机行业招聘数据处理与分析系统
  • 2025.3.3总结
  • 面试基础---MySQL 事务隔离级别与 MVCC 深度解析
  • Mac安装配置使用nginx的一系列问题
  • git 学习笔记
  • 【消息队列】BrokerServer的核心概念
  • 在Electron中通过Node-API调用DLL导出函数的完整指南
  • 神经网络前向微分和后向微分区别
  • 面试题汇总(一)
  • 机器学习4-PCA降维
  • CMake学习笔记(一):工程的新建和如何将源文件生成二进制文件
  • conda 更换镜像究极方法
  • 新品速递 | 多通道可编程衰减器+矩阵系统,如何破解复杂通信测试难题?
  • YOLO11改进-模块-引入多域学习MDL(Multi-Domain Learning) 使用频域增强图像特征
  • jQuery UI 简介
  • IntelliJ IDEA集成MarsCode AI
  • Java开发的AI应用框架简述——LangChain4j、Spring AI、Agent-Flex