一级a做爰片免费网站短视频教程,网站使用微信支付,企业站网络推广,百度网盟 网站定向【本题来自牛客网#xff0c;解题方法也借鉴于牛客网上讨论区中的多种答案#xff0c;在此做一个总结】 parse方法需要实现的效果如下#xff1a; var object {b: { c: 4 }, d: [{ e: 5 }, { e: 6 }]
};
console.log( parse(object, ‘b.c’) 4 ) //true
console.log( par…【本题来自牛客网解题方法也借鉴于牛客网上讨论区中的多种答案在此做一个总结】 parse方法需要实现的效果如下 var object {b: { c: 4 }, d: [{ e: 5 }, { e: 6 }]
};
console.log( parse(object, ‘b.c’) 4 ) //true
console.log( parse(object, ‘d[0].e’) 5 ) //true
console.log( parse(object, ‘d.0.e’) 5 ) //true
console.log( parse(object, ‘d[1].e’) 6 ) //true
console.log( parse(object, ‘d.1.e’) 6 ) //true
console.log( parse(object, ‘f’) ‘undefined’ ) //true 先来理解一下这个方法需要实现什么功能简单来说就是传入两个参数第一个参数为待访问的一个对象第二个参数为一个字符串字符串中是调用对象中的值的语句parse()方法需要根据字符串中的语句访问object对象并返回访问的结果。 那么怎么实现这个方法呢。 可以看到题中传入的字符串中的语句有点表示法和方括号表示法将字符串中的字母分割出来放进数组再迭代访问object对象。 解决方案1 在访问对象之前先将[转换成.并将]转换成。 接着用split分割字符串。 用map函数迭代分割后的数组呈现obj[b[c]]的形式访问object。 function parse(obj, str) {str.replace([, .).replace(], ).split(.).map((ele) obj obj[ele.trim()]);return obj || undefined;
} 解决方案2 function parse(obj, str) {var arr str.replace([, .).replace(], ).split(.);//循环方法迭代访问for(var i0;iarr.length;i) {if (obj[arr[i]]) {obj obj[arr[i]];}else {return undefined;}}return obj;
} 解决方案3 function parse(obj, str) {//使用reduce迭代var o str.replace([, .).replace(], ).split(.).reduce((pre,cur) cur ? pre[cur] : pre,obj);return o || undefined;
} 解决方案4 //不替换掉中括号直接判断分割字符串
function parse(obj, str) {var o str.split(/\.|\[|\]/).reduce((pre,cur) cur ? pre[cur] : pre,obj);return o || undefined;
} 解决方案5 这可能是最简洁的方法了...但是好像有点违背了题目的本意 //使用eval()直接执行访问语句
function parse(obj, str) {obj eval(obj.str);return obj || undefined;
} end 转载于:https://www.cnblogs.com/xiaokeai0110/p/9688242.html