2015-10-23 2 views
0

Это сводит меня с ума в течение нескольких часов, взгляните на этот простой цикл:значения соответствия не признается соответствие

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 

первый элемент матч, но не признанный таковым. Я пробовал несколько разных циклов с тем же результатом.

Я также сделал жестко запрограммированный версию массива:

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

, которые работали и генерируемый ожидаемый выход.

Но я не могу понять, почему «настоящая» версия этого не делает. При просмотре вывода я не вижу проблемы.

Подсказки оценены! Thanks

+3

Проверить 'length' обеих строк, если отличаются использовать' подрезать() ' – Tushar

+0

Try: если (trimuser._id.trim() === req.body.dogId.trim()) { –

+0

после проверяя предложение от Tushar ... Совет, попробуйте использовать 'string.localeCompare (param)' –

ответ

1

Я думаю, проблема связана с различием в типах данных двух значений, которые вы сравниваете. Оператор === (равный и равный тип) сравнивает как значение, так и тип данных. Преобразуйте значение типа объекта в строку, используя функцию String(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'); 
} 
}); 
+0

Да, console.log (typeof (user._id)); -> объект ...... я попробую ваше решение – RogerDore

+0

И это сработало! Большое вам спасибо и благодарю вас за комментарии выше. – RogerDore

+0

добро пожаловать! –

Смежные вопросы