【问题标题】:How do I access values from a Map object in a loop?如何在循环中访问 Map 对象的值?
【发布时间】:2022-11-23 02:53:45
【问题描述】:

我有一个名为dataLookup 的对象,其内容为https://pastebin.com/MG4xB8ht。 这是其中一项的样子:

    {
        "key": "Andaman & Nicobar",
        "value": {
            "state": "Andaman & Nicobar",
            "fcra_registered": 8,
            "total": 140
        }
    },

我想访问每个 keytotal 值并将其分配给另一个组件中的道具。 我有这个:

z={(d) => dataLookup.get(d["state"])["total"]}

这给了我一个错误:

Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'total')

我做错了什么,我该如何解决?

更新:我添加了整个问题的工作 REPL。您可以在控制台中看到错误。 It is here,错误出现在第62行。

【问题讨论】:

  • 错误发生时d["state"]dataLookup.get(d["state"]) 是什么?
  • @mykaf 我如何找到它?
  • 您能否将其更新为可运行的minimal reproducible example,它可以演示问题并指示您期望的结果?
  • 你知道如何使用console.log()吗?
  • 您如何将数据添加到地图?

标签: javascript dictionary


【解决方案1】:
let list = [{
    "key": "Andaman & Nicobar",
    "value": {
        "state": "Andaman & Nicobar",
        "fcra_registered": 8,
        "total": 140
    }
}]
let ans = list.map(item =>  ({[item.value.state]:item.value.total}))

console.log(ans)

【讨论】:

  • 谢谢你的回答,你能看看我更新的问题吗?我添加了一个具有更完整代码的 Repl。我将如何在我的代码中实现你的答案?
【解决方案2】:

我会遍历每个项目并执行逻辑:

myData.forEach(item => myProp = item.value.total);

【讨论】:

  • Map 不是数组。
  • 在循环中重复覆盖一个变量是没有意义的。如果那是目标,那么就不需要循环,只需将该变量设置为集合中最后一个元素的值即可。
  • 你是对的,我想我误解了这个提问者每次都试图将value分配给不同组件的道具?
猜你喜欢
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 2021-09-30
相关资源
最近更新 更多