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

2021-10-23 11:21:09 字數 639 閱讀 2899

使用for in遍歷時,會有以下問題

index索引為字串型數字(注意,非數字),不能直接進行幾何運算

遍歷順序有可能不是按照實際陣列的內部順序(可能按照隨機順序)

使用for-in會遍歷陣列所有的可列舉屬性,包括原型方法method和name屬性都會被遍歷出來,通常需要配合hasownproperty()方法判斷某個屬性是否該物件的例項屬性,來將原型物件從迴圈中剔除

所以for-in更適合遍歷物件且配合hasownproperty()方法一起使用,通常是建議不要使用for-in遍歷陣列

for of可以簡單有效的遍歷陣列,並且不會遍歷原型上的method和name

如果想要遍歷,可通過object.keys()把物件轉化為陣列再遍歷

他有如下優點:

這是最簡潔、最直接的遍歷陣列元素的語法

這個方法避開了for-in迴圈的所有缺陷

與foreach()不同的是,它可以正確響應break、continue和return語句

簡單總結就是

for in遍歷的是陣列的索引(即鍵名),而for of遍歷的是陣列元素值

for-in得到的是物件的key或陣列、字串的下標

for-of得到的是物件的value或陣列、字串的值,另外還可以用於遍歷map和set

for in遍歷和for 迴圈

在做收藏功能的時候,使用的是把資料儲存到nsuserdefaults 中。過程是,現將要儲存的資訊用自定義的乙個model 儲存,再用nsmutablearray 把model 新增到陣列中,把陣列儲存到 nsuserdefaults中,使用的方法是 nsuserdefaults user nsus...

js中for in遍歷物件屬性

for in函式會遍歷物件中的所有可列舉屬性,那麼,問題來了,不可列舉屬性又是什麼?每個物件的屬性自身,都有乙個屬性,enumerable,若屬性a的屬性值即a.enumerable為false,則屬性a為不可列舉屬性。為何要定義enumerable屬性呢?就是為了一下三個操作。enumerable...

快速遍歷 for in

快速遍歷 for.in.nsarray ages 12,23,22,16,34 注意快速遍歷過程中,不允許需改元素個數 盡量保證快速遍歷的集合中的元素型別一致 for nsnumber nin ages nsdictionary dic 快速遍歷對於字典來說每次得到的都是鍵 for nsstring...