JavaScript深度迭代遍歷未知物件

2021-09-10 07:09:32 字數 1039 閱讀 5167

物件導向程式設計的語言,都存在對物件的一些操作,其中就包括遍歷未知物件的屬性值。

通常情況

常見的遍歷物件的方法:

var o =

for(i in o)

// name: cloud

// age: 20

特殊情況

但是物件中又含有子物件,物件的屬性又是另乙個物件,或者更深層巢狀,上面方法就不適用了;

下面使用遞迴實現這個功能:

var o =

, age:20}

function

myfn

(obj)}}

myfn

(o);

// 輸出:

// name: [object object]

// firstname: cloud

// lastname: huang

// age: 20

這樣的話不論物件有多複雜的結構都能全部遍歷到位;

困境但同時,這也是個問題,一些物件層次非常深甚至是死迴圈的情況就尷尬了,類似於子物件屬性與父物件屬性一樣,嘗試用上訴函式遍歷一下瀏覽器的window物件就能體會了,你會後悔的;

所以為避免這種尷尬情況,設定乙個迭代深度值吧,指定遍歷到第幾代:

var depth =0;

// depth為迭代深度值

function

myfn

(obj)

}}

或者使用一種類似懶載入的形式:

function

myfn

(obj)}}

}

技術文章推送

手機、電腦實用軟體分享

JavaScript中的 for in 迴圈遍歷

var arr 1,2,3,4 var obj var str qwert 陣列 for var ele in arr 物件 for var ele in obj 字串 按序逐個輸出字元 在迴圈遍歷時,所有瀏覽器的最新版本現在都按chrome的標準執行,先把當中的 非負整數鍵 提出來,排序好輸出,然...

javascript 陣列的深度複製

一般情況下,使用 可以實現賦值。但對於陣列 物件 函式等這些引用型別的資料,這個符號就不好使了。陣列的簡單複製 1.1 簡單遍歷 最簡單也最基礎的方式,自然是迴圈處理。示例 function array copy arr for i 0,len arr.length i len i else ret...

Javascript陣列中迭代的幾種寫法

js中陣列有 5 個迭代方法。分別是 every 對陣列中的每一項執行給定函式,如果該函式對每一項都返回 true,則返回 true。filter 對陣列中的每一項執行給定函式,返回該函式會返回 true 的項組成的陣列。foreach 對陣列中的每一項執行給定函式。這個方法沒有返回值。map 對陣...