网上的阿里二面的一道笔试题,实现destructuringArray方法

僤鯓⒐⒋嵵緔 提交于 2019-11-30 04:32:25

网上的阿里二面的一道笔试题,实现destructuringArray函数,具有如下功能:

// destructuringArray( [1,[2,4],3], "[a,[b],c]" )
// result
// { a:1, b:2, c:3 }

网上查了查,代码过于复杂。
这个用解构赋值就可以了,不过要用eval

先提取出字符串中的变量,声明变量
然后解构赋值: [a,[b],c]= [1,[2,4],3]
最后返回对象。

1 function destructuringArray(ary,str){
2     var obj,tmp=str.replace(/[\[\]]/g,"");//正则去除[]
3     (0, eval)("var "+tmp+";");//定义变量,严格模式下,间接调用eval 
4     eval(str+"=ary;");//解构赋值
5     eval("obj={"+tmp+"};");
6     return obj;
7 }

 

不用eval的写法

1 function destructuringArray(ary,str){
2     var tmp=str.replace(/[\[\]]/g,"");//正则去除[]
3     return new Function( "var "+tmp+";"+str+"="+JSON.stringify(ary)+";return {"+tmp+"};")();
4 }

 

destructuringArray([1,[2,4],3], "[a,[b],c]");
{ a: 1, b: 2, c: 3 }
destructuringArray([1, [2, [4]], 3], "[a,[b,[d,e]],c]");
{ a: 1, b: 2, d: 4, e: undefined, c: 3 }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!