不改变原数组(不考虑引用类型)
arr.join(?value)
return string
返回一个以value为连接符连接数组各值的字符串
arr.concat(?...arg)
return array
返回一个连接多个数组的新数组
arr.slice(start = 0,end = this.length)
return array
返回一个从start开始到end结束的数组,[)左闭右开
arr.map(fn(?value, ?index, ?sourceArr){return newValue}, ?thisArg)
return array
返回一个经过fn函数处理返回新值的数组,在fn中改变value是无效的,引用类型除外
arr.every(fn(?value, ?index, ?sourceArr){return true}, ?thisArg)
return boolean
arr所有元素必须全部经过fn检测为true才会返回true,在fn中改变value是无效的,引用类型除外
arr.some(fn(?value, ?index, ?sourceArr){return true}, ?thisArg)
返回 boolean
如果arr中有一个元素经过fn检测为true,则返回true,并且后续成员不会在执行检测,在fn中改变value是无效的,引用类型除外
arr.filter(fn(?value, ?index, ?sourceArr){return true}, ?thisArg)
返回array
返回一个经过fn函数过滤的数组,在fn中改变value是无效的,引用类型除外
arr.forEach(fn(?value, ?index, ?sourceArr){...}, ?thisArg)
返回 undefined
用于对数组进行遍历,在fn中改变value是无效的,引用类型除外
arr.reduce(fn(total, currentValue, index, sourceArr){return ...}, ?initialValue)
return 最后一次fn()的return
以累加器的形式执行循环执行fn,首次执行fn的total将会从initialValue(包括undefined)(存在)或者arr[0](initialValue不存在)传入,之后每次执行fn的total将会从上一次的return传入,最后一次执行fn的return返回给外部。
值得注意的是initialValue存在,currentValue将会从arr[0]开始,否则从arr[1]开始,相对的index一个是0一个是1。在fn中改变value是无效的,引用类型除外
Array.from(object, ?fn(?value, ?index){return xxx}, ?thisArg)
return array
object:类数组对象(含有length属性)或者可遍历(iterable)的对象
该方法先将类数组对象和可遍历对象转为数组,然后经过第二参数fn统一处理返回对应的值(过程相同于map),但是参数只有两个,返回处理过后的新数组,在fn中改变value是无效的,引用类型除外
Array.of(?...arg)
return array
该方法将一组值(arg内的所有元素)放在一个数组内返回
arr.find(fn(?value, ?index, ?sourceArr){return true}, ?thisArg)
return 第一个被检查到的值orundefined
返回第一个经过fn函数检查的元素,没找返回undefined,在fn中改变value是无效的,引用类型除外
arr.findIndex(fn(?value, ?index, ?sourceArr){return true}, ?thisArg)
return 第一个被检查到的索引值or-1
用法同上,区别在返回值不同,在fn中改变value是无效的,引用类型除外
arr.findLast(fn(?value, ?index, ?sourceArr){return true}, ?thisArg)
return 第一个被检查到的值orundefined
用法同find,区别在从后往前检索,从后往前从1开始
arr.findLastIndex(fn(?value, ?index, ?sourceArr){return true}, ?thisArg)
返回 第一个被检查到的索引值orundefined
用法同findIndex,区别在从后往前检索,从后往前从1开始
arr.keys()
return 遍历器对象
遍历数组的键名并返回一个遍历器对象
arr.values()
return 遍历器对象
遍历数组的键值并返回一个遍历器对象
arr.entries()
return 遍历器对象
遍历数组的键值对并返回一个遍历器对象,arr.entries().next()的结果会是一个数组['key', 'value']
arr.includes(?value, start = 0)
return boolean
判断数组中从start开始是否含有value,可判断NaN
arr.at(index = 0)
return 对应元素
返回数组中对应索引index的值,支持负索引
arr.flat(num = 1)
return array
根据num决定拉平多少层级的二维数组,可使用Infinity表示无论多少嵌套数据都要转成一维数组,会跳过空位,返回拉平后的数组,不影响原数组
arr.flatMap(fn(?value, ?index, ?sourceArr){return true}, ?thisArg)
return array
相当于拉平一层后执行map方法,在fn中改变value是无效的,引用类型除外
arr.toReversed()
return array
等同reverse但不改变原数组,返回新数组
arr.toSorted()
return array
等同sort但不改变原数组,返回新数组
arr.toSpliced()
return array
等同splice但不改变原数组,返回新数组
arr.with(index = 0, value = undefined)
return array
等同splice(index, 1, value)但不改变原数组,返回新数组
arr.group(fn(?value, ?index, ?sourceArr){return groupName})
待定
return object
根据fn对数组内每个元素进行分组,组名为groupName,最后返回一个分好组的对象
arr.groupMap(fn(?value, ?index, ?sourceArr){return groupName})
待定
return Map
使用方法同上,但是返回一个Map数据,键名可以是任何值
会改变原数组
arr.pop()
return undefinedorarr最后一个元素
删除原数组最后一个元素并且返回,如果是空数组,那么返回undefined
arr.push(?...arg)
return 添加元素后的数组长度
在原数组末尾添加元素
arr.shift()
return undefinedorarr第一个元素
删除原数组第一个元素并且返回,如果是空数组,那么返回undefined
arr.unshift(?...arg)
return 添加元素后的数组长度
在原数组头部添加元素
arr.reverse()
return 原数组的引用地址
将原数组的顺序颠倒一次
arr.sort(fn(left, right){return 0/1/-1} = (x,y) => x.toString()[0].charCodeAt() - y.toString()[0].charCodeAt() )
return 原数组的引用地址
将原数组的按照fn的规则进行排序,-1表示符合预期顺序,1表示不符合,0表示相等
arr.splice(?start, length = this.length, ...arg)
return array
将原数组的按照start开始的位置截取length长度的数组,在截取位置插入arg内部的所有元素,最后将截取的数组返回。start不传值则不截取。
arr.copyWithin(target = 0, start = 0, end = this.length)
return 原数组的引用地址
复制start开始到end结束的值[),然后从target位置开始覆盖式粘贴,最后返回原数组。
arr.fill(value = undefined)
return 原数组的引用地址
将value强制覆盖到arr内的每一个元素,如果value是引用类型则覆盖的是地址