使用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...