一、数组方法
数组方法是操作数组的核心工具,分为修改原数组和返回新数组两类。
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
转字符串。
-
-
易错点:
-
splice
vsslice
:前者修改原数组,后者不修改。 -
substr(start, length)
(已废弃) vssubstring(start, end)
。 -
replace
默认只替换第一个匹配项,需用正则/g
全局替换。
-