網上的阿里二面的一道筆試題,實現destructuringArray方法

網上的阿里二面的一道筆試題,實現destructuringArray函數,具備以下功能:函數

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

網上查了查,代碼過於複雜。
這個用解構賦值就能夠了,不過要用evalspa

先提取出字符串中的變量,聲明變量
而後解構賦值: [a,[b],c]= [1,[2,4],3]
最後返回對象。code

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 }
相關文章
相關標籤/搜索