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