Skip to content

数组方法

来源:js/基础/3方法.html

速查导航

生成数组

改变原数组

不改变原数组

遍历方法


生成数组

还可以通过 [...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 对数组中的每个元素进行处理,返回新的数组。(undefinednull 会被 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 属性(不可枚举)