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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

查看java返回的值,JavaScript 遍历对象查找指定的值并返回路径

發(fā)布時(shí)間:2025/3/21 javascript 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 查看java返回的值,JavaScript 遍历对象查找指定的值并返回路径 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問:JavaScript 如何查找對象中某個(gè) value 并返回路徑上所有的 key?

let obj = {

key1: 'str1',

key2: {

key3: 'str3'

},

key4: {

key5: {

key6: 'str6',

key7: 'str7'

},

key8: 'str8'

},

key9: 'str9'

};

有例如上面這樣一個(gè)對象,要求封裝一個(gè)函數(shù),傳入對象和某個(gè) value,返回該 value 路徑上的 key。比如:searchKeys(obj, "str3"),得到 "key3, key2"?!?來源于 @zanetti 的一篇 「博問」

我本想在該「博問」下作答,但是「博客園」提示我注冊尚且不滿 24 小時(shí),不允許我回答「博問」欄目的問題。好吧,我確實(shí)是 3 月 16 日晚上剛剛注冊的「博客園」賬號,既然無法回答那就干脆寫第一篇博客。博客的申請?jiān)?3 月 17 日早上剛剛審核通過。

言歸正傳,這題要求遍歷對象,而本質(zhì)其實(shí)就是對一個(gè)多叉樹進(jìn)行遞歸。

封裝函數(shù)并遍歷對象

第一步是最簡單的,不必多說。

function search(object, value) {

for (var key in object) {

// ...

}

}

必須先有結(jié)果

既然知道這里需要遞歸,那么最重要一點(diǎn)就是必須找到結(jié)果,因?yàn)闆]有最終結(jié)果的遞歸操作肯定會(huì)「無法自拔」。此題,當(dāng) key 對應(yīng)的值等于 value 時(shí),遞歸就將結(jié)束,代碼如下。

if (object[key] == value) {

return [key];

} else {

}

然后思考遞歸

現(xiàn)在需要分析一下,如果沒有找到 value,object[key] 的值有哪些情況?

1、一個(gè)不等于 value 字符串;2、一個(gè)對象。

如果是一個(gè)字符串,那么肯定是不需要任何操作,繼續(xù)下一次 for ... in 循環(huán)即可。如果是一個(gè)對象,那么繼續(xù)對這個(gè)對象重復(fù)剛剛的遍歷操作,此處即遞歸。

if (typeof(object[key]) == "object") {

var temp = search(object[key], value);

}

繼續(xù)分析(理論上腦子里面可以假設(shè)這是倒數(shù)第二步即可)。

假如遞歸的操作并沒有找到 value,那么返回值是什么?我用一個(gè) temp 變量來接收返回值,而沒有找到 value 肯定就沒有返回值,所以 temp 應(yīng)該是 undefined。

假如遞歸的操作找到了 value,那么返回值是什么?對,是 key(這里我為了輸出方便,使用了數(shù)組存放所有的 key)。既然得到了最后一步的 key,把他與當(dāng)前的 key 放在一起即可。

if (temp == undefined) {

} else {

return [key, temp].flat();

}

這里我是用了 flat() 方法,這個(gè)方法可以抹平一個(gè)數(shù)組。不管嵌套了多少的數(shù)組,都會(huì)展開成為一個(gè)無嵌套數(shù)組。

舉個(gè)例子:array = ["a", "b", ["c", "d"], ["e", ["f"]]] => array = array.flat() => array = ["a", "b", "c", "d", "e", "f"];

最終函數(shù)

function search(object, value) {

for (var key in object) {

if (object[key] == value) {

return [key];

} else if (typeof(object[key]) == "object") {

var temp = search(object[key], value);

if (temp == undefined) {

} else {

return [key, temp].flat();

}

} else {

}

}

}

再稍微修改一下。

function search(object, value) {

for (var key in object) {

if (object[key] == value) return [key];

if (typeof(object[key]) == "object") {

var temp = search(object[key], value);

if (temp) return [key, temp].flat();

}

}

}

至此,第一篇博客寫完。我接觸 JavaScript 的時(shí)間不長,也是個(gè)新手,好在這題主要是遞歸算法,如有錯(cuò)誤請?jiān)谠u論中指出,不勝感激!

總結(jié)

以上是生活随笔為你收集整理的查看java返回的值,JavaScript 遍历对象查找指定的值并返回路径的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 超碰在线香蕉 | 天天做天天爱天天操 | 伊人影音 | 息与子五十路翔田千里 | aaaa级片| 国产精品边吃奶边做爽 | 亚洲精品水蜜桃 | 啪啪自拍 | 成人在线免费网站 | 久色成人网 | 新婚若妻侵犯中文字幕 | 国产午夜一区二区 | 男人天堂欧美 | 黄色日批| 91亚洲视频在线观看 | 天天操天天操天天操天天操 | 97久久人国产精品婷婷 | 日韩一区不卡视频 | 欧美xxxxx视频 | 一区二区免费在线观看视频 | 日韩欧美视频免费观看 | 男人av影院 | 国产在线播放一区 | 男人的天堂网av | 欧美一级一级一级 | 中文字幕第 | 一级大片黄色 | 国产伦精品免费视频 | 国语一区二区 | 在线播放亚洲 | 亚洲AV无码成人精品国产一区 | 97国产视频| 天堂成人在线视频 | 亚洲影院在线 | 最近中文字幕免费 | 91免费国产在线观看 | 国产91专区 | 以女性视角写的高h爽文 | 亚洲乱码精品久久久久 | 少妇久久久久久被弄到高潮 | 亚洲免费视频一区二区 | 伊人激情综合网 | 国产在线xxx| 无毛av| 11孩岁女毛片 | 日韩视频一二三区 | 日韩人妻无码精品久久免费 | 国产精品伦一区二区三区免费看 | 日韩精品极品视频免费观看 | 狠狠干性视频 | 91久操| 女人17片毛片60分钟 | 1024金沙人妻一区二区三区 | 国产一级在线观看 | 精品二区在线 | 国产第一亚洲 | 自拍偷拍第一页 | 日本不卡一区二区三区在线观看 | 97香蕉超级碰碰久久免费软件 | 大奶av| 天天插综合网 | 牛牛av| 操老女人视频 | 激情图片在线观看 | 亚洲青青草原 | 午夜手机福利 | www日本黄色 | av片在线免费看 | 亚洲精品美女在线观看 | 精品人妻久久久久一区二区三区 | 麻豆精品免费 | 色www| 2022国产精品 | 男人天堂五月天 | 免费看污片的网站 | 男生看的污网站 | 久久久久久欧美精品se一二三四 | 国产免费一区二区三区最新6 | 大伊人久久 | 精品91自产拍在线观看二区 | 久草视频在线资源 | 91高清视频| 成人刺激视频 | 草久久免费视频 | 成人免费黄色小视频 | 中文字幕二区 | 黄色片a级 | 男人草女人| 五月中文字幕 | 久久久精品动漫 | 国产精品欧美综合亚洲 | 亚洲欧美日韩图片 | 久久亚洲av成人无码国产电影 | 日韩在线观看 | 午夜久久久久久久久久久 | 91精品国产成人观看 | 女人夜夜春| 性感美女一区 | 欧美成人aaaaⅴ片在线看 |