簡體   English   中英

匹配的值不被識別為匹配

[英]matching values is not recognized as matching

這讓我抓狂了好幾個小時,看看這個簡單的循環:

  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

第一項是匹配項,但不能被識別為匹配項。 我一直在嘗試幾個具有相同結果的不同循環。

我還制作了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');
}
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM