for...of 和 for...in 是否可以直接遍歷對象,有什么解決方案


答案:

  for...of不能直接遍歷對象,for  in可以直接遍歷對象

原因:

  for...of需要實現iterator接口,對象沒有實現iterator接口

解決:

  const obj = {a: 1, b: 2}

  for (let item of Object.keys(obj)) a  b

  for (let item of Object.values(obj)) 1  2

  for (let item of Object.entries(obj)) ["a" 1] ["b" 2]

 手動實現iterator:

  

        obj[Symbol.iterator] = function()  {
            let index = 0;
            console.log(this)
            const _this = this;
            let keys = Object.keys(_this);
            let length = keys.length;
            return {
                next () {
                    if (index < length) {
                        return {
                            value: _this[keys[index++]],
                            done: false
                        }
                    } else {
                        return {
                            value: null,
                            done: true
                        }
                    }
                }
            }
        }

以上都可以實現for  of遍歷對象


免責聲明!

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



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