«

数组常用方法

时间:2023-8-28 21:59     作者:小锐     分类: JS


1.flat

flat(Infinity)是Array.prototype.flat()方法的一个用法,它的参数是一个无穷大的值Infinity。将Infinity作为参数传递给flat()方法时,它会递归地展开所有嵌套的数组,直到将所有元素展开为一个新的一维数组。

    let arr3 = [1,2,3,[2,3,1,[5,6,4,7],[2,3,6,9,4,5,[0,7,1,4,2,3,[3,6,2,0,1,[2,0,2,5,]]]]]];
    let arr4 = arr3.flat(Infinity)

    console.log(arr4)
    //打印出来 [1, 2, 3, 2, 3, 1, 5, 6, 4, 7, 2, 3, 6, 9, 4, 5, 0, 7, 1, 4, 2, 3, 3, 6, 2, 0, 1, 2, 0, 2, 5]
     arr4.sort((a,b)=>a-b)   // a-b 为正序  b-a 为倒序
       console.log(arr4)
     使用sort排序之后  [0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 9]

     arr4.sort((a,b)=>a-b)
     console.log(arr4)
     //b-a 为倒序
    // [9, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0];
我知道的还有一种方法是通过递归实现
使用reduce方法来展开嵌套的数组,并将所有元素放入一个新的数组中,通过调用summm(arr3)来执行该函数,并将arr3作为参数传递进去。执行后,将返回一个新的数组ffff,其中包含了arr3中的所有元素,不论嵌套的层数有多深。
```javascript
 function summm(arr) {
       return arr.reduce((v, i) => {

      if (Array.isArray(i)) {
           v.push(...summm(i))
      } else {
           v.push(i)
    }
       return v
  }, [])
}
  let ffff = summm( arr3);


######  在v.push(...summm(i))时我使用了递归来处理嵌套的数组。当遇到嵌套的子数组时,会递归调用summm函数来展开子数组,并将展开后的元素加入到结果数组中。

标签: flat(Infinity) sort reduce