关于递归的使用

递归算法在拉平数组中有很多中用法,下面介绍两种

 function flatten(arr){
        arr2 = []
        function _flat(arr){
        arr.forEach(val => {
            if(Array.isArray(val)){_flat(val)}
            else( arr2.push(val))
            
        });
        }
        _flat(arr)
        return arr2
    }
        var arr = [1, [2], [3, [[4]]]]
        var arr2 = flatten(arr)
        console.log(arr2)
  • 注意:在拉平的时候最好不要引进i,因为你没办法确定i的值。
  • 使用数组判断语句是Array.IsArray(val) 判断val是否为数组
  • 在中间引入新的函数_flat是为了避免上面的arr2重复,同时可以单独调用

方法二

 function flattern2(arr){
                return arr.reduce(function(initArr,currentArr){
                return initArr.concat(Array.isArray(currentArr)?flattern2(currentArr):currentArr)
                },[])
            }
                   var arr = [1, [2], [3, [[4]]]]
            var arr2 = flattern2(arr)
            console.log(arr2)

方法十分巧妙,使用拼接语句,其中reduce主要是起一个遍历的作用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容