0
点赞
收藏
分享

微信扫一扫

ES6方向:数组的拓展方法

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));

举报

相关推荐

0 条评论