這是非常常見的任務:在 JavaScript 中遍歷對象的屬性。

如果你有一個對象,你不能只使用 map()forEach()for..of 循環來遍歷它。

你會得到錯誤:

const items = {
 'first': new Date(),
 'second': 2,
 'third': 'test'
}

map() 會給出 TypeError: items.map is not a function

items.map(item => {})

forEach() 會給出 TypeError: items.forEach is not a function

items.forEach(item => {})

for..of 會給出 TypeError: items is not iterable

for (const item of items) {}

那麼,你可以做些什麼來進行遍歷呢?

for..in 是一種更簡單的方式:

for (const item in items) {
 console.log(item)
}

你還可以調用 Object.entries() 來生成一個包含所有可枚舉屬性的數組,然後使用上述任意一種方法遍歷它:

Object.entries(items).map(item => {
 console.log(item)
})

Object.entries(items).forEach(item => {
 console.log(item)
})

for (const item of Object.entries(items)) {
 console.log(item)
}