for in of 物件遍歷的區別

2022-03-13 10:12:02 字數 1395 閱讀 8760

用於物件的可訪問屬性的遍歷,for-in 讀取鍵名,適合處理物件

遍歷數字鍵,也會遍歷非數字鍵或其他屬性

返回key在迭代中不保證返回順序

用於讀取可迭代屬性的value,for-of 讀取鍵值

資料結構有symbol.iterator屬性,表示有iterator介面,可以使用 for-of 迴圈

for-of內部呼叫資料結構的symbol.iterator方法

直接取值簡潔高效

和foreach不同,可以使用continue  break   return

可以遍歷大部分的資料結構,可以處理【類陣列】

類陣列

string                  字串

dom nodelist      節點列表

arguments            函式引數

set                       set

map                     map

使用  for-of 處理物件  需要先進行預處理

entries()轉為迭代器物件 用of訪問,返回值帶有index

object.prototype.tostring.call( arr.entries())

//   "[object array iterator]"型別名稱特殊

keys()先獲取乙個key的陣列,基於陣列進行物件遍歷

特殊處理,使用生成器將迭代器或者陣列迴圈中的值,分步返回,在用迴圈迭代,迭代器方式返回key。

function* entries(obj)

}object.keys(obj) 

自身可列舉屬性   (不含symbol屬性,不包括原型鏈上的屬性)

for in自身可列舉屬性 (包括原型鏈上的屬性)

hasownproperty是否是自身屬性,不包括陣列的empty,不包括原型鏈的屬性

object.getownpropertynames(obj)

自身屬性名列表

object.getownpropertysymbols(obj)自身symbol屬性

reflect.ownkeys(obj)

包含物件自身所有屬性,屬性名是symbol或字串,或者是否可列舉.

遍歷物件方法for in 和for of的區別

使用for in遍歷時,會有以下問題 index索引為字串型數字 注意,非數字 不能直接進行幾何運算 遍歷順序有可能不是按照實際陣列的內部順序 可能按照隨機順序 使用for in會遍歷陣列所有的可列舉屬性,包括原型方法method和name屬性都會被遍歷出來,通常需要配合hasownproperty...

python 遍歷物件 python遍歷物件列表

我有乙個物件列表,其中包含電子 中的 名稱 範圍 在處理電子 時,我需要更新與範圍相關的值。儲存此資訊的類如下所示 class varname name none refersto none referstor1c1 none value none def init self,name,refers...

json物件的遍歷

json 有兩種結構 1 物件 jsonobject 屬性 值 得集合。var json for var obj in json 2 陣列 jsonarray 由值組成的有序列表。var json jack mike tom 20,true for var i 0 i json.length i 復...