1. 程式人生 > >JavaScript遍歷一個物件的所有屬性

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
...