高级前端js【Q685】如何遍历一个对象

如何遍历一个对象

Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 704

Author 回答者: shfshanyue

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

Author 回答者: DanielLeefu

  1. for in
  2. object.keys()
  3. object.entries()

Author 回答者: Yand-hi

普通对象可以通过添加一个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 方法