如何遍历一个对象
Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 704
Author 回答者: shfshanyue
Reflect.ownKeys({ a: 3, b: 4})
Object.keys({ a: 3, b: 4 })
Author 回答者: DanielLeefu
- for in
- object.keys()
- 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
方法