zoukankan      html  css  js  c++  java
  • js数组拍平(数组扁平化)的六种方式

    1.数组拍平也称数组扁平化,就是将数组里面的数组打开,最后合并为一个数组

    2.实现

    var arr = [1,2,[3,4,5,[6,7,8],9],10,[11,12]];

    a:递归实现

    function fn(arr){
        let arr1 = [] arr.forEach((val)
    =>{ if(val instanceof Array){ arr1 = arr1.concat(fn(val)) }else{ arr1.push(val) } }) return arr1 }

    b:reduce实现

    function fn(arr){
        return arr.reduce((prev,cur)=>{
            return prev.concat(Array.isArray(cur)?fn(cur):cur)
        },[])
    }

    c:flat 

    参数为层数(默认一层)

    arr.flat(Infinity)

     d:扩展运算符

    function fn(arr){
        let arr1 = [];
        let bStop = true;
        arr.forEach((val)=>{
            if(Array.isArray(val)){
                arr1.push(...val);
                bStop = false
            }else{
                arr1.push(val)
            }
        })
        if(bStop){
            return arr1;
        }
        return fn(arr1)
    }

    e:toString

    let arr1 = arr.toString().split(',').map((val)=>{
                return parseInt(val)
            })
            console.log(arr1)

     f:apply

    function flatten(arr){
         while(arr.some(item => Array.isArray(item))){
               arr =  [].concat.apply([],arr);
         }
          return arr;
    }
  • 相关阅读:
    TCP 连接中的TIME_WAIT
    tcp 重组原理
    自己用wireshark 抓了个包,分析了一下
    wireshark 使用技巧
    IP 网际协议
    CSS3 选择器
    ajax 底层源码解析
    初识 Java
    jQuery (DOM篇)
    绘制 SVG
  • 原文地址:https://www.cnblogs.com/guan-shan/p/10165737.html
Copyright © 2011-2022 走看看