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

被折叠的 条评论
为什么被折叠?



