js数组相关方法
数组是值的有序集合。数组中对应的每个值叫做元素,元素可以是不同类型的(包括“ ”,undefined,[],{})。每个元素都有对应的数字编码,就是我们所说的索引。
Eg: let arr = [1, 'test', true, undefined, null, [1, 2, 3], {a: 1}]
1. join
将数组转化为字符串,什么都不填写默认以“,”间隔
2. reverse
将数组逆序(原数组被修改)
3. sort
将数组按照数值大小排序(原数组被修改)
注: 如果对应的元素是字符串则按照对应的ASCII码大小排序(eg: arrSort2);假如对应的元素为字符串且字符串长度不为1,则按顺序比较,先将第1位按ASCII码大小比 较,如果第一位相同则比较第二位(eg: arrSort3)
常用的ASCII码表:
4. concat
合并数组(原数组不会被修改)
注: 使用concat可以合并数组,并且原数组不会被修改,因此经常被用于做数组深拷贝
5. slice
返回截取的数组(原数组不会被修改)
slice(start, end)
start: 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
注意:slice是左闭右开,映射成数学集合是 [start, end),所以截取的数组不包括end最后一个元素
注: arraySlice3为什么为空,因为slice(-1, -3),-1为起始元素指向arraySlice数组中元素6,-3为中止元素指向元素4,按照arraySlice数组的顺序元素6在元素4的右边,因此截取到的为空
6. splice(原数组被修改)
数组拼接中添加或删除元素,然后返回剩余的数组
arr.splice(index, count, i1, ..., i2)
index: 必选,删除或添加元素的位置
count: 必选,删除元素的长度,如果为0则不会删除
i1, ..., i2: 可选,向数组添加的新项目
7. forEach
数组遍历,对数组的每一个元素执行一次提供的函数
8. map (原数组未被修改)
遍历素组,返回一个新的数组
9. filter (原数组未被修改)
数组过滤,filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
10. every (原数组未被修改)
数组判断,every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
注意: 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
11. some (原数组未被修改)
数组判断,some()方法用于检测数组所有元素是否含有符合指定条件(通过函数提供)。
12. reduce(原数组未被修改)
reduce
方法接收一个函数作为累加器,数组中的每个值(从左到右)开始合并,最终合并为一个值。
reduce(func, initVal)接受两个参数
第一个参数func指回调函数,func(p1, p2, p3, p4)有四个参数,分别代表,p1:上次回调结束后的结果,p2:当前元素,p3:当前元素的索引,p4:调用reduce的数组
第二个参数是指初始默认值,如果不填写,则视为无初始默认值
注:常用于数组求和,相比循环累加耗时较短
13. reduceRight(原数组未被修改)
与reduce
方法相似,不同之处在于从数组的末尾向前将数组中的数组项做累加。
14. indexOf / lastIndexOf
indexOf: 返回某个指定的字符串值在字符串中首次出现的位置。
lastIndexOf: 返回某个指定的字符串值在字符串中最后一次出现的位置。
15. isArray
判断是否为数组