【问题标题】:javascript getting undefined after find object in array在数组中找到对象后,javascript变得未定义
【发布时间】:2020-06-19 10:49:27
【问题描述】:

我不明白我做错了什么。我有一个简单的代码:

console.log(req.params.id); 
let tour = tournaments.find((item) => {return item.id === req.params.id});
console.log(tournaments);
console.log(tour);
console.log(req.params.id); 

其中tournaments 是一个对象数组。这是我的输出:

1592563085412
[
  Tournament {
    id: 1592563085412,
    discipline: 'chess',
    type: 'Bracket Tournament',
    description: 'des 1',
    date: '2020-06-19 12:38:05'
  }
]
undefined
1592563085412

为什么我在console.log(tour); 之后变得未定义我应该改变什么?我希望收到id = 1592563085412 的对象

感谢和最好的问候!

【问题讨论】:

  • 可以是typeof req.params.id === string吗?
  • 你也可以隐式返回let tour = tournaments.find((item) => item.id === req.params.id);不需要return关键字
  • 使用您提供的所有信息,您的代码应该可以工作:jsfiddle.net/pfz0jxou 请提供minimal reproducible example

标签: javascript arrays object filter find


【解决方案1】:

确保item.idreq.params.id 属于同一类型。为此,您可以添加日志记录:

console.log(typeof item.id)
console.log(typeof req.params.id)

如果它们不是同一类型,请使用== 或更好地将两者转换为同一类型。例如。 parseInt(req.params.id, 10)。我希望req.params.id 是罪魁祸首,因为请求参数被序列化为字符串。

看到这个帖子:Which equals operator (== vs ===) should be used in JavaScript comparisons?

严格相等运算符 (===) 的行为与抽象相同 相等运算符 (==),除了没有进行类型转换,并且 类型必须相同才能被视为相等。

【讨论】:

  • 是的,我在 15 秒前解决了这个问题;D 无论如何,谢谢! :)
猜你喜欢
  • 2012-08-03
  • 2020-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-14
  • 2018-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多