实现destructuringArray方法

这是一篇关于如何实现类似ES6数组解构功能的博客。通过调用内置的解构并组装对象,以及字符串转数组和递归拆解,来达成目标效果。文章以一道阿里的面试题为例,描述了将[1, [2, 4], 3]转换为{ a:1, b:2, c:3 }的过程,但作者认为这种严谨的方法并不适合自己。" 132978438,19974121,STM32单片机运用Device Tree控制LED,"['嵌入式硬件', 'STM32开发', 'Linux内核', '驱动程序开发']

阿里的一道面试提,实现es6的数组解构功能,并用对象形式返回

达到如下效果

// destructuringArray( [1,[2,4],3], "[a,[b],c]" );

// result // { a:1, b:2, c:3 }

1.既然es6已经实现,调用es6解构后自己组装对象

     function test(arr,str){
        var o=new Function('',`
            const ${str} = ${JSON.stringify(arr)};
            const arr=${JSON.stringify(str)}.match(/[a-z]+/ig);
            const obj={};
            for(let i of arr){
                obj[i]=eval(i);
            }
            console.log(obj);
        `);
        o(arr,str);
    }
    test([1,[2,4],3], "[a,[b,d,e],c]");

2.将字符串转为字符串数组后,递归拆解数组

   function descArr(arr,o,arr2){
        for(var i=0;i<arr.length;i++){
            if(Array.isArray(arr[i])){
                descArr(arr[i],o,arr2[i]);
                continue;
            }
            o[arr[i]]=arr2[i];
        }
    }
    function test(arr,str){
        str=str.replace(/([a-z])+/g,'"$1"');
        var x=JSON.parse(str);
        var o={};
        descArr(x,o,arr);
        return o;
    }
    console.log(test([1,[2,4,[5,6]],3], "[a,[b,d,[e,f]],c]"));

3.正则替换字符串内容

呃 这种正式的严谨的做法不适合我

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值