用於物件的可訪問屬性的遍歷,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 復...