如何迭代 Map() 对象?

科恩

我有一个需要迭代的 Map() 对象,因此我可以获得星期几和选定的小时。下面的代码不起作用,因为Object.keys(newFieldReservationPrice).forEach它试图循环一个 Map() 对象,这似乎没有意义。那么,有没有更好的解决方案呢?

这是下面的代码:

handlePriceInput = (e, hour, day) => {
let value = e.target.value

const newFieldReservationPrice = this.state.newFieldReservationPrice
console.log('newFieldReservationPrice', newFieldReservationPrice) // A Map();
let map;

if (!newFieldReservationPrice instanceof Map) {
  console.log('!== Map')
  console.log('newFieldReservationPrice is a Map()? inside if ()', newFieldReservationPrice)
  if (newFieldReservationPrice[day] && newFieldReservationPrice[day][hour]) {
      newFieldReservationPrice[day][hour] = Number(value)
  } 
} else {
  map = new Map();
  console.log('map object', Object.keys(newFieldReservationPrice)) // logs map object []

  Object.keys(newFieldReservationPrice).forEach(key => {
    console.log('key', key)
      map.set(key, new Map(Object.entries(newFieldReservationPrice[key])));
  }); // This doesn't work
  console.log('Am I a Map()? map', map)

  const aux = map.get(day)
  console.log('aux day', aux) // A Map()
  aux.set(hour, Number(value)) // Comes as undefined || Cannot read property 'set' of undefined
  console.log('aux set', aux) // A Map()

  map.set(day, aux);
  console.log('what do I have?', map)

}
const isReservationPrice = !newFieldReservationPrice instanceof Map ? newFieldReservationPrice : map
console.log('isReservationPrice', isReservationPrice)

this.setState({
  newFieldReservationPrice: isReservationPrice
})
}

谢谢!:)

TJ克劳德

Maps 提供了三种方法来获取其内容的迭代器:

  • keys - 迭代地图中的键
  • values - 迭代值
  • entries- 迭代键和值,给你[key, value]数组

正如尼娜所指出的Maps 也提供forEach,它循环遍历它们的内容,为回调提供值、键和映射作为参数。

使用适合您的用例的一种。例如,如果您要替换Object.keys,请使用keys同样,如果您想要地图中的条目(我注意到您曾经使用Object.entries过),请使用entries.

请注意,在您的代码中的一些地方,您似乎试图使用[]. 这不适用于地图,您需要使用get.


还要注意的是你打破阵营的规则,一个通过设置基于现有状态的新状态,但不使用的回调版本setState如果在设置新状态时需要使用现有状态,则必须使用回调版本:

this.setState(prevState => {
    // ...use `prevState` values (*not* `this.state`!) to create an object with
    // the updates, then return the object...
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

.map()迭代对象数组

来自分类Dev

使用.map()迭代对象React中的数组

来自分类Dev

如何迭代对象

来自分类Dev

ejs如何迭代对象

来自分类Dev

如何在drools文件中迭代List <HashMap>并更新Hash Map对象并返回更新的List

来自分类Dev

如何依次遍历Flutter中Map的对象值,并在迭代时逐一返回每个值?

来自分类Dev

如map所支持的,如何将filter与多个可迭代对象一起使用?

来自分类Dev

如何在不迭代 Thymeleaf 的情况下访问 Map 中的对象键

来自分类Dev

如何迭代 List<Map<String,String>> 并将其键、值添加到 Java 对象中

来自分类Dev

Tryinf迭代Map,如何跟踪迭代次数?

来自分类Dev

如何迭代 Map<string, string>?

来自分类Dev

如何迭代对象原型的属性

来自分类Dev

如何使类对象可迭代

来自分类Dev

如何迭代对象项列表

来自分类常见问题

使用Java 8 Streams的Hash Map对象列表迭代

来自分类Dev

将地图对象作为可迭代的map方法的参数传递

来自分类Dev

如何更新Map类型的嵌套对象

来自分类Dev

如何从休眠查询中获取Map对象

来自分类Dev

如何在map函数内传递对象?

来自分类Dev

如何从 Typescript Map 转换 JSON 对象?

来自分类Dev

如何访问google.map对象中的“标记”对象?

来自分类Dev

如何。迭代terraform中的list(map(list))

来自分类Dev

如何使用* ngFor迭代对象键?

来自分类Dev

如何使自定义对象可迭代?

来自分类Dev

如何迭代GSON制作的JAVA对象列表

来自分类Dev

如何使用JSTL迭代对象数组的ArrayList?

来自分类Dev

如何迭代SendGrid模板中的对象数组?

来自分类Dev

如何迭代Javascript中的嵌套对象数组

来自分类Dev

如何使自定义对象可迭代?

Related 相关文章

热门标签

归档