這是非常常見的任務:在 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)
}