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)
    
  • 相关阅读:
    CodeForces
    EOJ 3506. 斐波那契数列
    牛客练习赛13 D幸运数字Ⅳ . 康托逆展开
    UVA
    Piggy-Bank HDU
    Dollar Dayz POJ
    UVA 674 Coin Change (完全背包)
    python OOP (1)
    python lambda简易使用
    python whl模块安装方法
  • 原文地址:https://www.cnblogs.com/zhahuhu/p/14491605.html
Copyright © 2011-2022 走看看