数组方法
静态方法
- Array.from():从类数组或者可迭代对象中创建一个新的数组实例
Array.from([1, 2, 3], x => x + x) //[2,4,6]
Array.from('foo') //['f', 'o', 'o']
- Array.isArray():用来判断某个变量是否是一个数组对象,返回true/false
- Array.of():根据参数创建一个新的数组实例
Array.of(7) 创建一个具有单个元素 7 的数组,而 Array(7) 创建一个长度为 7 的空数组Array.of(7); // [7] Array.of(1, 2, 3); // [1, 2, 3] Array(7); // [ , , , , , , ] Array(1, 2, 3); // [1, 2, 3]
实例方法:
-
Array.at(Index)
接收一个整数值并返回该索引的项目 -
Array.concat(arr2)
合并两个或多个数组,返回新的数组(深拷贝) -
Array.copyWithin(target, start, end)
复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。
target:索引,赋值序列到原数组的该位置,负数从末尾计算
start:开始赋值元素的起始索引
end:结束位置的索引,不包括这个位置[1, 2, 3, 4, 5].copyWithin(-2) // [1, 2, 3, 1, 2] [1, 2, 3, 4, 5].copyWithin(0, 3) // [4, 5, 3, 4, 5] [1, 2, 3, 4, 5].copyWithin(0, 3, 4)// [4, 2, 3, 4, 5]
-
Array.entries()
返回一个新的Array Iterator迭代器,其上有一个.next
方法,可用于遍历迭代器取得原数组的 [key, value],done
属性可判断迭代器时候到末尾var arr = ["a", "b", "c"]; var iterator = arr.entries(); console.log(iterator.next()); /*{ value: [0, 'a'], done:false } */ var arr = ["a", "b", "c"]; var iterator = arr.entries(); for (let e of iterator) { console.log(e); } // [0, "a"] // [1, "b"] // [2, "c"]
-
Array.every()
测试一个数组内所有元素能否通过某个函数的测试,返回布尔值 -
Array.fill(value,start,end)
某个固定值填充数组内某一段的全部元素,不包括终止索引,改变本身 -
Array.filter(Fnc(element,index,arr))
返回一个新数组,包含原数组中能通过所提供函数的所有元素
Fnc
:处理函数
element
:正在处理的元素
index(可选)
:正在处理元素的索引
arr(可选)
:原数组 -
Array.find(Fnc(element,index,arr))
返回数组中满足测试函数的第一个元素的值,无则返回 undefined -
Array.findIndex(Fnc(element,index,arr))
返回数组中满足测试函数的第一个元素的值,无则返回 -1 -
Array.flat(Index)
按照一个可指定深度的递归遍历数组,将所有元素包括子数组中的元素合并为新数组并返回
Array.flat(Infinity)
可展开任意深度的嵌套数组const arr1 = [0, 1, 2, [3, 4]]; console.log(arr1.flat())// [0, 1, 2, 3, 4] const arr2 = [0, 1, 2, [[[3, 4]]]]; console.log(arr2.flat(3))// [0, 1, 2, [3, 4]]
flat() 方法会移除数组中的空项
-
Array.flatMap(Func(val,index,arr))
使用映射函数映射每个元素,然后将结果压缩成一个新数组,结构深度为1。 flatMap 通常在合并成一种方法的效率稍微高一些。 -
Array.forEach(Func(element,index,arr))
对数组的每个元素执行一次给定的函数,不会改变原数组,
注意:除了抛出异常以外,没有办法中止或跳出 forEach循环。能提前终止的循环:
for循环 for…of for…in Array.every() Array.some() Array.find() Array.findIndex()
-
Array.includes(value)
判断一个数组是否包含某个指定的值,返回true/false -
Array.indexOf(value)
返回数组中找到第一个给定值的索引,不存在返回-1 -
Array.join(str)
将数组内所有元素用某个字符串连在一起并返回const elements = ['Fire', 'Air', 'Water']; console.log(elements.join());//Fire,Air,Water console.log(elements.join(''));// FireAirWater console.log(elements.join('-'));//Fire-Air-Water
-
Array.keys()
返回一个包含数组中每个索引键的Array Iterator对象
-
Array.map(Func(element,index,arr))
返回一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。与Array.forEach类似,map方法会返回被某个函数处理过的数组,forEach不会。 -
Array.pop()
从数组中删除最后一个元素并返回该元素的值,若数组为空则undefined,改变原数组 -
Array.push()
将一个或多个元素添加到数组的末尾,并返回数组的新长度 -
Array.reduce(Func(preVal, curVal, curIndex,arr),initialVal)
对数组中的每个元素按序执行函数操作,每次函数操作会将上次函数操作的结果当作参数传入,最后将其汇总的结果返回
Func
: 一个reducer函数,包含四个参数
preVal
: 上次函数处理的返回值,第一次调用,若传入了初始值initialVal
则调用这个,若没有则是数组中索引为0的元素
curVal
:数组中正在处理的元素
curIndex
:数组中正在处理元素的索引
arr
:用于遍历的数组如果数组仅有一个元素(无论位置如何)并且没有提供初始值 initialValue,或者有提供 initialValue 但是数组为空,那么此唯一值将被返回且 callbackfn 不会被执行。
-
Array.reverse()
将数组中元素的位置颠倒,改变原数组 -
Array.shift()
从数组中删除第一个元素并返回该元素的值,若数组为空则undefined,改变原数组 -
Array.slice(begin, end)
方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝
slice 方法可以用来将一个类数组(Array-like)对象/集合转换成一个新数组。function list() { return Array.prototype.slice.call(arguments); } var list1 = list(1, 2, 3); // [1, 2, 3]
-
Array.some(Func(element,index,arr))
测试数组中是否至少有一个元素通过了某函数测试,若有则立即返回true,数组中若无则返回false -
Array.sort()
原地算法对数组进行排序并返回数组,默认排序顺序是在将元素转换为字符串,比较它们的 UTF-16 代码单元值 -
Array.splice(start,count,item)
通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
start:指定修改的起始位置
count:表示要移除元素的个数
item:要添加进数组的元素,若不指定则指删除 -
Array.toString()
返回一个字符串表示指定的数组及其元素const array1 = [1, 2, 'a', '1a']; console.log(array1.toString());// "1,2,a,1a"
-
Array.unshift()
将一个或多个元素添加到数组的开头,返回新的长度 -
Array.values()
返回一个新的Array Iterator对象
包含数组每个索引的值
Array中常用的遍历所有元素的方法
Array.filter(Fnc(element,index,arr))
返回一个新数组,包含原数组中能通过所提供函数的所有元素Array.flatMap(Func(val,index,arr))
使用映射函数映射每个元素,然后将结果压缩成一个新数组,结构深度为1。 flatMap 通常在合并成一种方法的效率稍微高一些。Array.forEach(Func(element,index,arr))
对数组的每个元素执行一次给定的函数,不会改变原数组,
注意:除了抛出异常以外,没有办法中止或跳出 forEach循环。
能提前终止的循环:for循环 for…of for…in Array.every() Array.some() Array.find() Array.findIndex()
Array.map(Func(element,index,arr))
与Array.forEach类似,map方法会返回被某个函数处理过的数组,forEach不会。Array.reduce(Func(preVal, curVal, curIndex,arr),initialVal)
对数组中的每个元素按序执行函数操作,每次函数操作会将上次函数操作的结果当作参数传入,最后将其汇总的结果返回
Array中返回新数组的方法
Array.from()
:从类数组或者可迭代对象中创建一个新的数组实例Array.of()
:根据参数创建一个新的数组实例,为单个整数是返回一个整数作为长度的空数组,为字符时直接返回包含这个元素的数组Array.concat(arr2)
合并两个或多个数组,返回新的数组(深拷贝)Array.slice(begin, end)
方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝Array.copyWithin(target, start, end)
复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。Array.flat(Index)
按照一个可指定深度的递归遍历数组,将所有元素包括子数组中的元素合并为新数组并返回Array.flatMap(Func(val,index,arr))
使用映射函数映射每个元素,然后将结果压缩成一个新数组,结构深度为1。Array.join(str)
将数组内所有元素用某个字符串连在一起并返回Array.map(Func(element,index,arr))
返回一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。与Array.forEach类似,map方法会返回被某个函数处理过的数组,forEach不会。
Array中改变数组本身的方法
Array.copyWithin(target, start, end)
复制数组的一部分到同一数组中的另一个位置,并返回它,会改变数组元素,不会改变原数组的长度。Array.splice(start,count,item)
通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。Array.pop()
从数组中删除最后一个元素并返回该元素的值,若数组为空则undefined,改变原数组Array.push()
将一个或多个元素添加到数组的末尾,并返回数组的新长度Array.unshift()
将一个或多个元素添加到数组的开头,返回新的长度Array.reverse()
将数组中元素的位置颠倒,改变原数组Array.shift()
从数组中删除第一个元素并返回该元素的值,若数组为空则undefined,改变原数组Array.sort()
原地算法对数组进行排序并返回数组,默认排序顺序是在将元素转换为字符串,比较它们的 UTF-16 代码单元值