javascript - 如何迭代 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
})
}
谢谢!:)
解决方案
您可以使用以下方法迭代Map
对象for of
:
for (const [key, value] of myMap) {
console.log(key, value);
}
这与遍历条目相同:
for (const [key, value] of myMap.entries()) {
console.log(key, value);
}
正如@Nina Scholz 所说,您可以forEach
在Map
原型(doc MDN)上使用:
myMap.forEach((value, key, map) => {
console.log(key, value);
}
推荐阅读
- go - go run main.go 将 go 模块更改为旧版本
- python - 如何从 CSV 数据框中绘制多个折线图
- python - 导入 img_to_array 时出错。ImportError:DLL 加载失败:找不到指定的模块
- json - 链接 JQ if: if A then BC else D end
- python - 如何在 Django Rest 中向 APIView 添加过滤?
- react-native - 无法为 FlatList 项目分配宽度
- java - 如何在调用 JVM 的关闭挂钩之前关闭 @SpringBootTest 上下文(一次,在所有 JUnit 测试之后)
- gcc - _mm256_fmadd_ps 比 _mm256_mul_ps + _mm256_add_ps 慢?
- javascript - 组合 2 个不同长度的数组,重复较短的数组以匹配较长数组的长度
- kubernetes - 当我放置 2 条路径时,使用 nginx 入口控制器的入口不起作用