JavaScript遍历一个对象的所有属性
JavaScript中,许多内置数据结构(例如Array)都有默认的迭代器,可以直接使用 for...of 循环。
例如:
a = [1,2,3,4,5]
for (let el of a) {
console.log(el);
}
// 1 2 3 4 5
但是,Object是故意不想像array一样有默认的迭代器。
不过,要想迭代一个对象的所有属性(不需要保证特定的顺序的话),可以通过Objects.keys(..)返回一个array。
let obj = {...}
for (let key of Objects.keys(obj)) {...}
迭代器:iterable,拥有next()方法。
从ES6开始,从一个iterable 中提取迭代器的方法是:iterable 必须支持一个函数,其名称是专门的ES6 符号值 Symbol.iterator。
let a = [1,2,3,4,5]
let it = a[Symbol.iterator]();
it.next().value; // 1
it.next().value; // 2
...