zoukankan      html  css  js  c++  java
  • 数组扁平化的方法

    数组扁平化就是把多维数组转为一维数组

    递归

    1.for循环
    遍历数组的每一项,如果不是数组,直接push,如果是数组,继续递归处理

    const arr = [1,[2,3],[4,[5,6]]]
    function flatten(arr){
        const res = []
        for(let i = 0; i < arr.length; i++){
            if(Array.isArray(arr[i])){
                res.push(...flatten(arr[i]))
                //res = res.concat(flatten(arr[i]))
            }else{
                res.push(arr[i])
            }
        }
        return res
    }
    flatten(arr)
    

    2.reduce

    const arr = [1,[2,3],[4,[5,6]]]
    function flatten(arr){
        return arr.reduce((res,cur)=>{
            return res.concat(Array.isArray(cur)?flatten(cur):cur)
        },[])
    }
    flatten(arr)
    

    ...运算符

    ...运算符可以将二维数组变为一维数组,做一个遍历,若arr中含有数组则使用一次扩展运算符,直至没有为止。

    const arr = [1,[2,3],[4,[5,6]]]
    function flatten(arr){
        while(arr.some(item => Array.isArray(item))){
            arr = [].concat(...arr)
        }
        return arr
    }
    flatten(arr)
    

    toString()/join() + split()

    如果数组每项都是数字,则可以先将数组转为字符串,再使用split()转为数组

    const arr = [1,[2,3],[4,[5,6]]]
    function flatten(arr){
        return arr.toString().split(',').map(item => item * 1)
    }
    flatten(arr)
    
  • 相关阅读:
    Java
    数据同步方案(附Java源码)
    windows下强大的wmic命令行工具
    利用dokan作虚拟磁盘开发
    用apache配置多个tomcat webapp
    apache2.2+tomcat配置[转]
    tomcat webdav
    Modbus/TCP
    AI语音验证码识别
    Win10 重命名文件夹:找不到指定文件。
  • 原文地址:https://www.cnblogs.com/zhahuhu/p/14491605.html
Copyright © 2011-2022 走看看