日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【练习】实现一个parse方法(需要实现的效果见内容),方法总结

發布時間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【练习】实现一个parse方法(需要实现的效果见内容),方法总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【本題來自牛客網,解題方法也借鑒于牛客網上討論區中的多種答案,在此做一個總結】

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 i=0;i<arr.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

總結

以上是生活随笔為你收集整理的【练习】实现一个parse方法(需要实现的效果见内容),方法总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。