使用 forEach 映射对象数组的 Object.entries 返回未定义,除非使用 console.log

2024-05-04

我有一个具有键值对的对象数组,我想在每个对象中找到特定的键并返回值。

数组的示例:

filterCounties=[
  {
    "StateName": "Delaware",
    "CountyName": "Kent",
    "FIPS": 10001,
    "Eligibles_2017": 33292,
    "Eligibles_2018": 34938,
    "Penetration_2017": 0.107,
    "Penetration_2018": 0.123
  },
  {
    "StateName": "Delaware",
    "CountyName": "New Castle",
    "FIPS": 10003,
    "Eligibles_2017": 94030,
    "Eligibles_2018": 98080,
    "Penetration_2017": 0.128,
    "Penetration_2018": 0.164
  },
  {
    "StateName": "Delaware",
    "CountyName": "Sussex",
    "FIPS": 10005,
    "Eligibles_2017": 61964,
    "Eligibles_2018": 65990,
    "Penetration_2017": 0.082,
    "Penetration_2018": 0.097
  },
  {
    "StateName": "Delaware",
    "CountyName": "Pending County Designation",
    "FIPS": 10,
    "Eligibles_2017": 9,
    "Eligibles_2018": 0,
    "Penetration_2017": 0,
    "Penetration_2018": 0
  }
]

我正在寻找的关键是 Penetration_2018 - 我可以使用以下代码并使用 console.log 输出值

const mapTest = new Map(
      Object.entries(filterCounties).forEach(([key, value]) =>
        console.log((key, value["Penetration_2018"]))
      )
    );

这将输出值:控制台.log 输出 https://i.stack.imgur.com/6EVPO.png

但是,如果我分配给一个变量然后记录该变量

 const mapTest = new Map(
      Object.entries(filterCounties).forEach(
        ([key, value]) => (key, value["Penetration_2018"])
      )
    );
    console.log(`This is mapTest ${mapTest}`);

我得到没有值的 [object Map] - 我认为使用箭头函数时,返回是隐式的?

输出图像 - 有或没有字符串连接在此输入图像描述 https://i.stack.imgur.com/WAHeL.png

我最终想提取这些值并将它们分配给 Victory BarChart 的 Y 轴。感谢您的任何见解/指导。


几个问题:

  • forEach总是返回undefined。你需要使用map反而。
  • (key, value["Penetration_2018"])不是一个元组,而是一个逗号运算符表达式,其结果为value["Penetration_2018"]。请改用方括号表示法。
  • A Map当转换为字符串时没有有用的表示。您需要将其转换为数组或其他内容以获得更有用的字符串表示形式:

Code:

const mapTest = new Map(
    Object.entries(filterCounties).map(
        ([key, value]) => [key, value["Penetration_2018"]]
    )
);
console.log(`This is mapTest ${JSON.stringify([...mapTest])}`);

对于数组,更传统的做法是直接应用map直接在阵列上,但为什么你需要一张地图还是个谜。如果您想要唯一的值,请使用 Set:

const uniques = [...new Set(filterCounties.map(value => value["Penetration_2018"]))];
console.log(`This is uniques: ${uniques}`);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 forEach 映射对象数组的 Object.entries 返回未定义,除非使用 console.log 的相关文章

随机推荐