极客时间返利平台,你可以在上边通过山月的链接购买课程,并添加我的微信 (shanyue94) 领取返现。

# 如何遍历一个对象

Issue

欢迎在 Gtihub Issue 中回答此问题: Issue 704 (opens new window)

  1. Reflect.ownKeys({ a: 3, b: 4})
  2. Object.keys({ a: 3, b: 4 })
  1. for in
  2. object.keys()
  3. object.entries()

Author

回答者: Yand-hi (opens new window)

普通对象可以通过添加一个Symbol.iterator属性,实现使用 for of 遍历

const obj = { a: 1, b: 2, c: 3 };

obj[Symbol.iterator] = function () {
  let i = 0;
  const keys = Object.keys(this);
  return {
    next: () => {
      return i <= keys.length - 1
        ? { value: this[keys[i++]], done: false }
        : { value: undefined, done: true };
    },
  };
};

for (let item of obj) {
  console.log(item);
}

//   1
//   2
//   3

for of 遍历每次都会调用 Symbol.iterator 中的 next 方法

Last Updated: 2/15/2022, 12:06:24 PM