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)
    
  • 相关阅读:
    Hadoop Python 调用自定义so动态库
    Golang Redigo连接Redis 简单使用
    Golang 错误 "bad file descriptor"
    Centos Git 安装与升级
    初识数据库
    MySQL介绍,下载和安装
    并发编程:协程
    并发编程:多线程
    并发编程:多进程
    操作系统,进程理论
  • 原文地址:https://www.cnblogs.com/zhahuhu/p/14491605.html
Copyright © 2011-2022 走看看