我下面的函數,我比較兩個相等的值(如顯示在控制檯,但回報是假的......ES6。如何正確比較===運算符?
function removeGroup(req, res, next) {
const user = req.user;
const found = user.groups.some((obj, idx) => {
console.log('obj._id: ', obj._id);
console.log('req.params.groupId: ', req.params.groupId);
if (obj._id === req.params.groupId) {
console.log('equal');
user.groups.splice(idx, 1);
return true;
}
console.log('not equal');
return false;
});
if (found) {
user.save()
.then(savedTable => res.json(savedTable))
.catch(e => next(e));
} else {
res.status(404);
res.json({ message: 'Group Not Found' });
}
}
這裏是.LOG導致控制檯
obj._id: 59109bc44ea63331151b9327
req.params.groupId: 59109bc44ea63331151b9327
not equal
顯然,他們是不相等的。檢查他們的類型(使用'typeof')。 – Bergi
@Bergi說了什麼,'=='和'==='之間的區別在於它們必須是相同的類型。如果'=='返回false,那麼還有其他事情正在進行。 –
[比較mongoose _id和字符串](http://stackoverflow.com/q/11637353/1048572)可能的重複?不幸的是,你沒有提供任何有關這些對象的信息。 – Bergi