zoukankan      html  css  js  c++  java
  • 【JS简洁之道小技巧】第一期 扁平化数组

      介绍两种方法,一是ES6的flat,简单粗暴。二是递归,也不麻烦。

    flat

      ES6自带了flat方法,用于使一个嵌套的数组扁平化,默认展开一个嵌套层。flat方法接收一个数字类型参数,参数值即嵌套层的深度,默认为1。(注意是“嵌套层”不是“层”,如传入0则不展开任何嵌套)

        需要注意的是:第一,flat方法一旦使用,必将移除掉数组的empty空项;第二,flat方法返回一个新数组,并不会改变原数组。

        由于我们不好确定最大嵌套层的深度,因此有个很暴力的方法,直接传入Infinity,可以展开任意深度的嵌套数组。

    let flattenDeep = (arr) =>{
        return arr.flat(Infinity);
    }
    

     

    reduce和concat递归

      这种方法也不麻烦,以一个空数组为基础值,遇到非数组的子元素,则加入到基础值数组中;如遇到数组子元素,说明有嵌套层,则递归使用flattenDeep方法,等待其返回一维扁平数组,然后再追加到基础值数组中。最后,把这个基础值数组return出去。

    let flattenDeep = (arr) =>{
       return arr.reduce((acc, cur) => 
        Array.isArray(cur) ? acc.concat(flattenDeep(cur)) : acc.concat(cur), []);
    }            
    

      

     

      

      

  • 相关阅读:
    25.Kafka(三):面试题
    24.Kafka(二):API
    23.Kafka(一):概述
    22.Flume监控、自定义组件、面试题
    21.Flume概述和企业开发案例
    20.Hive企业调优
    19.Hive函数、存储压缩
    18.Hive数据查询
    17.Hive数据操作
    16.Hive基础
  • 原文地址:https://www.cnblogs.com/zhangnan35/p/11262549.html
Copyright © 2011-2022 走看看