Appearance
数组方法
来源:
js/基础/3方法.html
速查导航
生成数组
- Array.of — 将参数转为数组
- Array.from — 字符串 — 字符串转数组
- Array.from — Set — Set 去重转数组
- Array.from — 类数组 — 类数组转真数组
改变原数组
- splice — 删除/插入元素
- sort — 排序
- pop — 末尾删除
- shift — 开头删除
- push — 末尾添加
- unshift — 开头添加
- reverse — 反转
- copyWithin — 内部复制替换
- fill — 填充
不改变原数组
- slice — 截取
- join — 拼接为字符串
- toString — 转字符串
- toLocaleString — 本地化字符串
- concat — 合并
- 扩展运算符 — 展开合并
- indexOf — 正向查找索引
- lastIndexOf — 反向查找索引
- includes — 是否包含
遍历方法
- forEach — 遍历(无返回值)
- every — 全部满足
- some — 任一满足
- filter — 过滤
- map — 映射
- reduce — 归约(从左到右)
- reduceRight — 归约(从右到左)
- find — 查找元素
- findIndex — 查找索引
- flat — 扁平化
- at — 索引访问(支持负数)
- keys / values / entries — 迭代器
- 迭代相关知识 — for...of / for...in / Symbol.iterator
生成数组
还可以通过
[...new Array(5)]和Array.apply(null, new Array(5))生成下标数组 相同内容数组:new Array(5).fill(null)
Array.of
of 将一组值转化为数组。
js
Array.from — 字符串
js
Array.from — Set
js
Array.from — 类数组
js
改变原数组
splice
splice() 添加/删除数组元素。
js
sort
sort() 数组排序。
js
pop
pop() 删除数组中的最后一个元素。
js
shift
shift() 删除数组的第一个元素。
js
push
push() 向数组的末尾添加一个或多个元素。
js
unshift
unshift() 向数组的开头添加一个或更多元素。
js
reverse
reverse() 颠倒数组中元素的顺序。
js
copyWithin
copyWithin() 指定位置的成员复制到其他位置。
js
fill
fill() 填充数组。
js
不改变原数组
slice
slice() 浅拷贝数组元素。原始类型的话是深拷贝,引用类型是浅拷贝。
js
join
join() 数组转字符串,调用元素各自的 toString。
js
toString
toString() 数组转字符串。
js
toLocaleString
toLocaleString() 数组转字符串,调用元素各自的 toLocaleString()。
js
concat
concat() 合并数组。
js
扩展运算符
... 扩展运算符,浅拷贝。
js
indexOf
indexOf() 查找数组是否存在某个元素,返回下标。不能识别 NaN。
引用类型直接声明不可以匹配,声明后放入可以。
js
lastIndexOf
lastIndexOf() 查找指定元素在数组中的最后一个位置。
js
includes
includes() 查找数组是否包含某个元素,返回布尔。可以识别 NaN。
js
遍历方法
forEach
js
骚操作: 在 forEach 里直接条件满足时
splice(index, 1)删除当前项,或者直接throw new Error()来终止循环。
every
every 有一个元素不满足,则整个表达式返回 false;都满足条件,则返回 true。
js
some
some 数组中是否有满足判断条件的元素。
js
filter
filter 过滤原始数组,返回新数组。
js
map
map 对数组中的每个元素进行处理,返回新的数组。(undefined、null 会被 toString 转化为空)
js
reduce
reduce 为数组提供累加器,合并为一个值。
js
reduceRight
reduceRight 从右至左累加,与 reduce 执行方向相反外,其他完全与其一致。
js
find
find() 找出第一个符合条件的数组成员,可以识别 NaN。
js
findIndex
findIndex() 返回第一个符合条件的数组成员的位置,可以识别 NaN。
js
flat
flat() 打平数组,直接给 Infinity 可以多维打平。
js
at
at() 相当于提供了 arr[arr.length - 1] 的简写方式。
js
keys / values / entries
keys() / values() / entries() 遍历键名、遍历键值、遍历键名+键值(返回的是可迭代对象 iterator)。
js
迭代相关知识
目前有
[Symbol.iterator]方法的类型有:
- 字符串 String
- 数组 Array
- 映射 Map
- 集合 Set
- arguments 对象
- NodeList 等 DOM 集合
for...of无法遍历对象,因为对象不具有 Iterator。 类数组对象可以通过obj[Symbol.iterator] = Array.prototype[Symbol.iterator]去迭代。
for...in不推荐遍历数组:数字会被转化为字符串,没有 break。
- 自身会遍历原型链上的属性(公有
prototype的属性)for...in无法遍历 Symbol 属性(不可枚举)