type
status
date
slug
summary
tags
category
icon
password
URL

数组API

改变数组本身

 

poppush 数组结尾的删除添加

 

unshiftshift 数组开头删除添加

 

sort 排序

进行对数组就地排序,直接改变原数组。(默认排序将元素转换为字符串,按照UTF-16 码元值升序排序)
接收可选参数,回调函数
sort回调参数:( a, b)
排序方式
a<b(从小到大)
a==b(保持原来)
a>b(从大到小)
返回值
-1
0
1
toSorted 排序的复制版
此方法兼容性不好,不推荐使用,node版本需要20.0.0以上,浏览器就不用说了
使用sort可以反转数组,但会改变原数组,toSorted不改变原数组,会返回排好序的数组,接受的参数和sort一致,参考sort
 

reverse 反转

toReversed 反转数组的复制版
此方法兼容性不好,不推荐使用,node版本需要20.0.0以上,浏览器就不用说了
使用reverse可以反转数组,但会改变原数组,toReveresed不改变原数组,会返回反转后的数组,接受的参数和reveresed一致,参考reveresed
 

splice 截取新增数据

可以选择删除数组中的某一个值,也可以在数组中的某个位置添加一些数据。
接收可选参数,【三个或以上的参数,第一个为截取的索引位置,number类型,第二个截取的个数,number类型,第三个或更多实在截取位置添加的参数】,可以是任何类型
toSpliced 截取新增数组的复制版
此方法兼容性不好,不推荐使用,node版本需要20.0.0以上,浏览器就不用说了
使用splice可以对数组进行截取和指定位置新增数据,但会改变原数组,toSpliced不改变原数组,会返回一个新的数组,接受的参数使用方法和splice一致,参考splice
 

copyWithin 将数组得一部分赋值到另一个位置

不会改变数组的长度,但会修改内容。
接收三个参数,第一个为复制到的目标位置(索引值),第二个是复制的起始位置(可选),如果为负数,则相当于从后往前数,第三个为结束位置,不包含此索引的位置(可选)
(起始位置不可小于结束位置,否则方法无效。并返回原数组)
 

fill 填充

对数组内容进行覆盖填充。
接收三个参数,第一个为填充的值,第二个为起始位置(可选),第三个为结束位置,不包含此索引位置(可选)。
copyWithin比较类似,只不过一个是移动数组内的元素,一个填充数组的内的元素,不会改变数组的长度。并返回这个数组

不改变原数组本身

 

filter 数据过滤

需要一定条件返回对应的数据。
接收回调函数有三个参数,第一个是当前遍历的元素,第二个为当前索引,第三个是数组本身,需要一个返回值,filter方法会根据符合这个返回值条件的数据返回一个新数组
 

map flatMap 扁平化

map单纯的返回一个新数组,可以是处理后的,也可以是原数组
回调函数有三个参数,第一个是当前遍历的元素,第二个为当前索引,第三个是数组本身,需要一个返回值,从map内部处理过后,回调函数的返回值返回一个新数组
flatMap 可以对数组进行一层扁平化(仅数组, 仅一层)
 

reduce 数据累加

很少使用,合理的使用reduce会大大减少代码量。
接收两个参数,参数1回调函数,参数2指定一个默认值
reduce参数1:回调参数
reduce参数2:指定一个默认值(可选)
参数1:为累加器(上一次回调函数return的结果),首次默认为reduce参数2,如果没有则为当前数组下标为0的参数。// reduce((acc, cur, index, acc)
.reduce(略, 0);
参数2为当前元素。// reduce((acc, cur, index, acc)
参数3当前索引值。// reduce((acc, cur, index, acc)
参数4为数组本身。// reduce((acc, cur, index, acc)
reduceRight 从右开始数据累加
reduce的右边开始一种写法,运算时会从右向左执行,参数与使用方法和reduce一致。
适用于当你想对一个数组进行反转加过滤等操作
 

slice 数组截取

可对数组进行浅拷贝,
接收两个参数,第一个为截取的初始位置,第二个为终止位置(不包括此索引值)(如果只填一个参数则从当前索引值截取到最后一位)
 

concat 数组合并

需要两个或以上的数组合并
 

with 修改指定索引值的复制版

此方法兼容性不好,不推荐使用,node版本需要20.0.0以上,浏览器就不用说了
既想使用索引值arr[index]=xxx 来改变某一个值,还不想改变原数组
接收两个参数,第一个为索引值,第二个是要修改成为数据

其他功能性方法

 

forEach 数组遍历

实际改变了数组本身
接收三个参数,第一个当前元素,第二个为索引值,第三个为数组本身
 

Array.from() 转换成数组

将可迭代的以及为数组的数据转换成真正的数组,并返回新数组,(字符串,dom伪数组等)
接收两个参数,第一个为要转化的参数,第二个是回调函数(可选),回调函数有两个参数当前遍历的对象索引
Array.fromAsync() 转换成数组(异步版本)
很少使用,在行为上与 Array.from() 几乎等价
 

Array.isArray 判断是不是数组

typeof判断其他类型(数组只会是object),Array.isArray判断数组
 

includes 判断某个值数组中是否存在

在数组中查抄某一个值,返回一个布尔值。(可用于简化判断条件)
接收两个参数,第一个要找的值,第二个开始索引位置
 

indexOf 判断数组中是否存在某个值,并返回索引

includes 类似,indexOf会在查找到第一个符合条件的参数跳出循环并返回索引,没找到则返回-1
接收两个参数,第一个是要找的值,第二个为开始索引位置。
 

find 查找符合条件的元素,并返回元素本身

查找符合条件的第一个元素并返回那个元素本身,没有则返回undefined
接收回调函数有三个形参,第一个当前元素,第二个当前索引,第三个数组本身
findLast 从右向左查找符合条件的元素
此方法兼容性不好,不推荐使用,node版本需要18.0.0以上,浏览器就不用说了
find使用方法一致,findLast从右向左查找符合条件的第一个元素并返回那个元素本身,没有则返回undefined
接收回调函数有三个形参,第一个当前元素,第二个当前索引,第三个数组本身
 

findIndex 查找符合条件的元素,返回索引版

find使用方法一致,查找符合条件第一个元素并返回那个元素的索引值,没有则返回-1
接收回调函数有三个形参,第一个当前元素,第二个当前索引,第三个数组本身
findLastIndex 从右向左查找符合条件的元素,返回索引版
此方法兼容性不好,不推荐使用,node版本需要18.0.0以上,浏览器就不用说了
findIndex 使用方法一致,findLastIndex 从右向左查找符合条件第一个元素并返回那个元素的索引值,没有则返回-1
接收回调函数有三个形参,第一个当前元素,第二个当前索引,第三个数组本身
 

at 返回索引位置的值

此方法兼容性不好,不推荐使用,node版本需要16.6.0以上,浏览器就不用说了
接收number的参数,可以为负数,正数时获取到索引为的值,当参数为负数时,从右向左查找对应的值
 

Array.of 创建可变的数组

使用静态方法创建一个可变的数组,可以接收任意类型,任意个数的参数
 

flat 扁平化数组

接收一个number类型的参数,参数是几就可以扁平几层(在不确定有几维数组的情况下,参数为Infinity(无限大),可以扁平任意层次的数组)
 

every 所有元素是否通过测试

every 用于所有元素是否都能通过测试,返回一个布尔值
接收回调函数有三个形参,第一个为当前元素,第二个为当前索引,第三个为数组本身(当数组为空的时候使用every,都会返回true。无条件正确,因为空集的所有元素都符合给定的条件)
 

some 测试数组中至少有一个元素通过测试

some 元素有一个或多个通过测试,就返回true,一个都没通过返回false
接收回调函数有三个形参,第一个为当前元素,第二个为当前索引,第三个为数组本身(当数组为空时使用some,不论判断条件如何,都会返回false)
 

join 选定格式转换成字符串

join 将数组转换成字符串
接收一个参数,为数组元素转换成字符串的间隔符,不传参数默认以 ‘,’号隔开
 

toString 转换成字符串

toString 将多种类型转换成字符串,(数组转换成字符串默认以‘,’号隔开undefinednull则会转换成空字符串
使用toString 进行扁平化,不论是几维数组,在toString的时候都会转化成字符串,在使用字符串方法转成数据就可以了
 

entries 返回数组迭代器的对象,包含键和值

keys 返回数组迭代对象,键
values 返回数组迭代对象,值

Reflect.ownKeys 判断对象是否为空

实用案例

数组添加元素

push() 方法

unshift() 方法

直接访问索引

concat() 方法

扩展运算符

splice() 方法

数组去重

使用Set:将数组转换为Set对象,Set对象会自动去除重复元素,之后再将Set对象转换为数组。
使用filter()方法:通过filter()方法遍历数组,返回仅包含首次出现的元素的新数组。
使用reduce()方法:通过reduce()方法遍历数组,将元素存储在一个临时对象中,每次遇到重复元素时将其跳过,最后返回所有不重复元素的数组。
使用Map:通过Map对象可以将数组元素作为键,通过Map的键唯一性特性去重,然后再将Map对象转换为数组。
上一篇
JavaScript方法集
下一篇
对象处理方法