如何在JavaScript中迭代对象的属性

35 阅读1分钟

这里有一个很常见的任务:迭代一个对象的属性,在JavaScript中

发表于2019年11月02日,最后更新于2020年4月5日

如果你有一个对象,你不能只用map()forEach()for..of 循环来迭代它。

你会得到错误。

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

map() will give you :TypeError: items.map is not a function

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)
}