手写数组flat函数

		const arr = [1, 2, [[[3, 4]]]]
        Array.prototype.flats=function(num,arr){
            if(this===null||this.undefined)throw new Error('"Cannot read property flats of null or undefined"')
            if(typeof(num)!="number"&&typeof(num)!="undefined")throw new Error('传值类型错误')
            if(!Array.isArray(this))throw new Error(this+'.flat is not a function')
            let other = Object(this)
            let A=[]
            function deeps(arrEven,num){
                if(num==undefined){
                    for(var a=0;a<arrEven.length;a++){
                        if(Array.isArray(arrEven[a])){
                            deeps(arrEven[a],num)
                        }else{
                            A.push(arrEven[a])
                        }
                    }
                }else if(num>0){
                    for(var a=0;a<arrEven.length;a++){
                        if(Array.isArray(arrEven[a])){
                            --num
                            deeps(arrEven[a],num)
                        }else{
                            A.push(arrEven[a])
                        }
                    }
                }else{
                    A.push(arrEven)
                }
            }
            for(var a=0;a<other.length;a++){
                if(Array.isArray(other[a])){
                    deeps(other[a],num)
                }else{
                    A.push(other[a])
                }
            }
            return A
        }
        console.table(arr.flats())  //[1,2,3,4]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值