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



我正在尝试迭代对象数组,以创建一个更适合我的计划的新对象。一切都很好,直到我在地图上放了一个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"]]
}
})))

如果有人像我一样在使用JavaScriptMap对象时结束了这个问题:

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 []

请查看下面的更正代码

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

我看到你已经明白为什么你的代码不能与上面的注释一起工作。

最新更新