JS 支援多種方法可以巡覽陣列或是物件,for loop、forEach、for in、for of 但各種方法的差異或是使用注意
事項為何?發現在使用上還是容易混淆,尤其再看了別人寫的Code 之後,別被似是而非的操作方式給騙了
首先來看一下 for loop
可以巡覽陣列或是物件
值得一提的是 for loop 可以中斷,使用 return 或 break
break 跳出迴圈並且往下執行後續程式碼,
return 則立刻回傳並停止執行後續程式碼
再來看 forEach
這個內建的方法很常被使用,操作起來很直覺
值得一題的是無法使用 break 跳出迴圈,故會一直巡覽到陣列結束,return 可以
再來看 for in
其實巡覽的是 key 值,而陣列的 key 值就是 index,因為陣列其實也是物件(typeof)
故若要取得元素值,可以這樣寫,並且支援『break 』以及『return』
故for in 改善了 forEach 不能使用 break 的缺點,由於使用 key 值來巡覽,
用在物件可以方便巡覽屬性值
另外,值得注意的是,若你的物件設計方式是可以透過建構方式呼叫,
如原型鍊中被繼承屬性或方法也會被列出來
這個地方可以透過 hasOwnProperty 來避免掉
最後是 for of
若要取得 index ,可以搭配 entries() 方法,將元素轉為 entity 集合
若要巡覽物件,同樣可以搭配 Object.entries() 使用
值得注意的是這個用法,繼承而來的屬性方法不會印出
以上就是這種迴圈的差異
參考
沒有留言:
張貼留言