匹配值不被识别为匹配

matching values is not recognized as matching

本文关键字:识别      更新时间:2023-09-26

这已经让我疯狂了几个小时了,看看这个简单的循环:

  myEvent.users.forEach( function( user ){
    console.log(user._id + '     ' + req.body.dogId );
    if ( user._id === req.body.dogId ){
      console.log('yay..');
    }else {
      console.log('no match');
    }
  });

生成以下输出:

      // 560d2cd0475f9ca012a7b2b2    560d2cd0475f9ca012a7b2b2
      // no match
      // 560d2cdd475f9ca012a7b2b3     560d2cd0475f9ca012a7b2b2
      // no match
      // 5613c6ee71dfaeac24371082     560d2cd0475f9ca012a7b2b2
      // no match

第一个Item是匹配的,但没有被识别出来。我已经尝试了几个不同的循环,结果都是一样的。

我还做了一个Array的硬编码版本:

 var arr = ['5613c6ee71dfaeac24371082', '560d2cdd475f9ca012a7b2b3','5613c6ee71dfaeac24371082' ]

工作并产生预期的输出。

但我不明白为什么"真正的"版本没有。当查看输出时,我看不出有什么问题。

提示赞赏!由于

我认为这个问题是由于您正在比较的两个值的数据类型的差异。===(相等值和相等类型)运算符比较数据的值和类型。在比较之前,使用String(object)函数将Object类型的值转换为字符串。

myEvent.users.forEach( function( user ){
console.log(user._id + '     ' + req.body.dogId );
if ( String(user._id) === req.body.dogId ){
  console.log('yay..');
}else {
  console.log('no match');
}
});