JavaScript 数组和字符串方法详解

server/2025/3/6 10:28:18/

一、数组方法

数组方法是操作数组的核心工具,分为修改原数组返回新数组两类。


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://www.ppmy.cn/server/172844.html

相关文章

java基础100道面试题

一、Java基础概念 1. Java的三大特性是什么?解释其含义。 Java的三大特性是封装、继承和多态: 封装(Encapsulation):将数据(属性)和操作数据的方法绑定在一起,形成一个类。通过访问…

[51 单片机] --串口编程

1,通讯方式基本概念 1,按照 --> 数据传送方式串行通讯:使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度,串行通信的特点:传输线少,长距离传送时成本…

C++并发以及多线程的秘密

1.基础概念 并发(Concurrency) 并发是指在同一时间段内,多个任务看起来像是同时执行的。并发并不一定意味着真正的同时执行,它可以是通过时间片轮转等方式在多个任务之间快速切换,让用户感觉多个任务在同时进行。并发…

SQL经典题型

查询不在表里的数据,一张学生表,一张学生的选课表,要求查出没有选课的学生? select students.student_name from students left join course_selection on students.student_idcourse_selection.student_id where course_selecti…

如何将飞书多维表格与DeepSeek R1结合使用:效率提升的完美搭档

将飞书的多维表格与DeepSeek R1结合使用,就像为你的数据管理和分析之旅装上一台涡轮增压器。两者的合作,不仅仅在速度上让人耳目一新,更是将智能化分析带入了日常的工作场景。以下是它们如何相辅相成并改变我们工作方式的一些分享。 --- 在…

Linux:vim快捷键

Linux打开vim默认第一个模式是:命令模式! 命令模式快捷键操作: gg:光标快速定位到最开始 shift g G:光标快速定位到最结尾 n shift g n G:光标快速定位到第n行 shift 6 ^:当前行开始 …

NUMA架构介绍

NUMA 架构详解 NUMA(Non-Uniform Memory Access,非统一内存访问) 是一种多处理器系统的内存设计架构,旨在解决多处理器系统中内存访问延迟不一致的问题。与传统的 UMA(Uniform Memory Access,统一内存访问…

Android14 OTA差分包升级报Package is for source build

制作好差分包&#xff0c;使用adb线刷模式验证ota升级&#xff0c;出现E:Package is for source build错误 使用adb方式验证 进入recovery模式 adb reboot recovery稍等一会界面会提示 Now send the package you want to apply to the device with "adb sidelaod <…