美文网首页
关于递归的使用

关于递归的使用

作者: 湾里晴空 | 来源:发表于2018-05-10 19:20 被阅读0次

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

     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主要是起一个遍历的作用。

    相关文章

      网友评论

          本文标题:关于递归的使用

          本文链接:https://www.haomeiwen.com/subject/ecjzrftx.html