js循環及for-in , for-of的區別


循環

字符串遍歷:可通過for-of遍歷字符串

for-in:遍歷對象自身可繼承可枚舉屬性

Object.keys():返回對象自身可枚舉屬性的鍵組成的數組

Object.getOwnPropertyNames():返回對象自身可繼承可枚舉非枚舉屬性的鍵組成的數組

Object.getOwnPropertySymbols():返回對象Symbol屬性的鍵組成的數組

Reflect.ownKeys():返回對象自身可繼承可枚舉非枚舉Symbol屬性的鍵組成的數組

 

 

 

ForOf循環

  • 定義:調用Iterator接口產生遍歷器對象(for-of內部調用數據結構的Symbol.iterator())
  • 遍歷字符串:for-in獲取索引,for-of獲取值(可識別32位UTF-16字符)
  • 遍歷數組:for-in獲取索引,for-of獲取值
  • 遍歷對象:for-in獲取鍵,for-of需自行部署
  • 遍歷Set:for-of獲取值 => for (const v of set)
  • 遍歷Map:for-of獲取鍵值對 => for (const [k, v] of map)
  • 遍歷類數組:包含length的對象、Arguments對象、NodeList對象(無Iterator接口的類數組可用Array.from()轉換)
  • 計算生成數據結構:Array、Set、Map
    • keys():返回遍歷器對象,遍歷所有的鍵
    • values():返回遍歷器對象,遍歷所有的值
    • entries():返回遍歷器對象,遍歷所有的鍵值對
  • 與for-in區別
    • 有着同for-in一樣的簡潔語法,但沒有for-in那些缺點、
    • 不同於forEach(),它可與break、continue和return配合使用
    • 提供遍歷所有數據結構的統一操作接口


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM