开发者问题收集

未捕获的类型错误:迭代器值未定义不是条目对象”将过滤器添加到映射

2022-04-20
11981

我试图遍历一个对象数组来创建一个更适合我未来计划的新对象。一切都很顺利,直到我在地图中放了一个 if 语句,但我不知道为什么?

const TestArray = [{
    value: 0.2,
    Time: '1980',
    Region: 'Oklahoma',
    RegionNumber: '1620',
    validTo: 2017
  },
  {
    value: 0.3,
    Time: '1983',
    Region: 'Oklahoma',
    RegionNumber: '1620',
    validTo: 2017
  },
  {
    value: 0.2,
    Time: '1986',
    Region: 'Oklahoma',
    RegionNumber: '1620',
    validTo: 2017
  },
  {
    value: 0.2,
    Time: '1988',
    Region: 'Oklahoma',
    RegionNumber: '1620',
    validTo: 2017
  },
  {
    value: 0.2,
    Time: '2018',
    Region: 'Oklahoma',
    RegionNumber: '1620',
    validTo: 2017
  }
]
console.log("This works fine:")
console.log(Object.fromEntries(TestArray.map((item) => [item["Time"], item["value"]])))
console.log("but when adding filter it crashes:")
console.log(Object.fromEntries(TestArray.map((item) => {
  if (!(parseInt(item["validTo"]) > item["Time"])) {
    [item["Time"], item["value"]]
  }
})))
2个回答

如果有人在使用 JavaScript Map 对象时遇到此问题,就像我一样:

const map = new Map(["a", 1], ["b", 2]);    // Iterator value is not an entry object
const map = new Map([["a", 1], ["b", 2]]);  // Correct, just forgot the []
Thomas Zimmermann
2022-11-16

请在下面找到更正后的代码

Object.fromEntries(TestArray.map((item) => {
  if (!(parseInt(item["validTo"]) > item["Time"])) {
    return [item["Time"], item["value"]]
  }
}).filter(item => item))

我发现您已经根据上面的注释了解了为什么您的代码无法正常工作。

JithinAji
2022-11-09