持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情
flat()方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
接收一个参数:
- depth:可选参数,即递归的层数,默认为1。depth 为Infinity时,可展开任意深度的嵌套数组
var array1 = [1, 2, 3, [4,5,6]];
var flat = array1.flat() // flat = [1,2,3,4,5,6] , depth=1
var array2 = [1, 2, 3, [4,5,6,[7,8,9,[10]]]];
var flat2 = array2.flat(Infinity) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ,depth = Infinity 展开任意深度的数组
flatMap()方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与map连着深度值为 1 的flat几乎相同。它接收两个参数callback函数和thisArr,返回值是一个新的数组,其中每个元素都是回调函数的结果,并且结构深度depth值为 1。似乎不是很好理解的样子。
callback函数有三个参数: 1.element 当前值 1.index 当前值下标 1.arr 原数组
var arr = [1,2,3,4]
var map1 = arr.map((x)=>[x*2]) // map1 = [[2],[4],[6],[8]]
var map2 = arr.flatMap(x=>[x*2]) // map2 = [2,4,6,8]
var map3 = arr.flatMap(x=>[[x*2]]) // map3 = [[2],[4],[6],[8]]
//从3次结果上可以看出来,flatmap相当于对于map的结果进行了一次深度为一的flat()操作。
includes()方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回 false。
接收两个个参数:
- value 需要查找的元素值。
- index 查找的起始下标
var arr = [1,2,3,4]
var inc = arr.includes(2) // inc = true
copyWithin()方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。
接收两个个参数:
- target:要替换的,要复制到的位置
- start:要复制元素的起始下标,不传时默认为0
- 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]