type
status
date
slug
summary
tags
category
icon
password
URL
数组API
改变数组本身
pop
,push
数组结尾的删除添加
unshift
,shift
数组开头删除添加
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
将多种类型转换成字符串,(数组转换成字符串默认以‘,’号隔开,undefined和null则会转换成空字符串)使用toString
进行扁平化,不论是几维数组,在toString的时候都会转化成字符串,在使用字符串方法转成数据就可以了
entries
返回数组迭代器的对象,包含键和值
keys
返回数组迭代对象,键values
返回数组迭代对象,值Reflect.ownKeys
判断对象是否为空
实用案例
数组添加元素
push()
方法
unshift()
方法
直接访问索引
concat()
方法
扩展运算符
splice()
方法
数组去重
使用Set:将数组转换为Set对象,Set对象会自动去除重复元素,之后再将Set对象转换为数组。
使用filter()方法:通过filter()方法遍历数组,返回仅包含首次出现的元素的新数组。
使用reduce()方法:通过reduce()方法遍历数组,将元素存储在一个临时对象中,每次遇到重复元素时将其跳过,最后返回所有不重复元素的数组。
使用Map:通过Map对象可以将数组元素作为键,通过Map的键唯一性特性去重,然后再将Map对象转换为数组。
- 作者:Orcatt
- 链接:https://orcatt.one/article/68c034ce-8a51-4ad6-93b3-9611938c4f9b
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。