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

mat*_*eva 7 javascript arrays object node.js

我正在尝试迭代对象数组以创建一个更适合我未来计划的新对象。一切正常,直到我在地图中添加了一个 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"]]
  }
})))
Run Code Online (Sandbox Code Playgroud)

Tho*_*ann 13

如果有人像我一样在使用 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 []
Run Code Online (Sandbox Code Playgroud)


Jit*_*Aji 1

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

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

我发现您已经理解为什么您的代码不能与上面的注释一起使用。