1、数组实例的copyWithin()方法
数组实例的copyWithin()方法,在数组的内部,将指定的位置的部分元素复制到其他位置上去,该操作会覆盖原有的数组元素,然后返回当前数组,意味着,使用这个方法,会修改当前的数组。
方法的参数
- target(必须):从该位置开始,如果为负数,表示从数组的尾部元素开始
- start(可选):从该位置开始读取数据,默认为0,如果是负数,同样表示是从数组的尾部元素开始读取
- end(可选):到该位置停止读取,如果这个不填的话,就意味着是一直到数组末尾,如果为负数,同样的意味着是从数组尾部开始计算
示例
let arr = [3,2,4,6,9,7];
arr.copyWithin(0,3);
let arr = [3, 2, 4, 6, 9, 7, 8, 9];
arr.copyWithin(0, 3);
2、数组实例的find()和findIndex()高阶函数
2.1、find()
数组实例的find方法,用来找出第一个符合条件的数组成员,它的参数是一个回调函数,所有的数组元素依次执行该回调函数,直到返回为true的成员,如果遍历了全部扔未找到,返回undefined.
let arr = [3, 2, 4, 6, 9, 7, 8, 9];
console.log(arr.find((result) => result > 5));
// 打印的结果是6
console.log(arr.find((result) => result === 5));
// 打印的结果是undefined
2.2、findIndex()
findIndex在基于find的基础上,查找元素的同时会把符合条件的第一个元素的下标值返回过去
let arr = [3, 2, 4, 6, 9, 7, 8, 9];
console.log(arr.findIndex((result) => result > 5));
// 有值打印索引,打印的结果是3
console.log(arr.findIndex((result) => result === 5));
// 没有值 打印的结果是-1
3、数组实例的fill()方法
fill方法是用于去填充数组,不管指定的位置有没有值,都会把要填充的元素放进去,而对于数组中已经有的元素,会被全部抹去。
fill()方法接受的参数与上面的copeWithin()类似,第一个也是打算填充的数据,第二个是填充的起始位置,第三个是填充的结束位置。
- 1、没有指定起始位置。全部被填充
let arr = [1, 2, 3, 4, 5];
arr.fill("fill");
console.log(arr);
- 2、指定开始位置,从开始位置之后,全部被填充
let arr = [1, 2, 3, , , , , , , , , , , , , ,];
arr.fill("fill", 3); // [3,正无穷)区间
console.log(arr);
- 3、指定起始位置,在指定的位置中进行填充
let arr = [1, 2, 3, , , "下标索引为5", , , , , "下标索引为10", , , , , ,];
arr.fill("fill", 6, 10); // [6,10)区间
console.log(arr);
4、数组扁平化(也称数组降维)flat()方法
flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
参数
- 指定要提取嵌套数组的结构深度,默认值为 1。(也就是要降的维数)
let arr = [1, 2, 3, [4, 5, 6, [7, 8, 9]]];
console.log(arr.flat(1));
console.log(arr.flat(2));
多层嵌套Infinity处理
let arr = [1,2,3,[4, 5, 6, [7, 8, 9, [10, 11, [12, 13, [14, 15, 16, [17, 18, 19]]]]]]];
console.log(arr.flat(Infinity));