我正试图了解这里的情况。我正在使用.findIndex()
搜索匹配的ID(我正在使用mongoose)。尽管具有完全相同的输出和类型,并且使用==
我仍然返回false。但是,如果我使用.toString()
转换它们都可以。不幸的是typeof
没有给我任何更多的信息,而不是两个都是对象。
有谁知道为什么会这样?
代码
moduleids = Object.values(user.modules.map(a=>[a.id]));
moduleindex = moduleids.findIndex(function(e) {
console.log("e: " + e);
console.log("module._id: " + module._id);
console.log("typeof module._id: " + typeof(module._id));
console.log("typeof e: " + typeof(e));
return(e == module._id);
});
user.modules架构的一部分。
modules: [ {
id: { type: Schema.Types.ObjectId, ref: 'Modules' },
modality: { type: String },
selected: { type: Boolean, default: false }
} ]
module
变量派生自模块架构。
输出
e: 5a4ee5d7e10c0a20dcb630e0
module._id: 5a4ee5d7e10c0a20dcb630e0
typeof module._id: object
typeof e: object
false // This only works if converted to string return(e.toString() == module._id.toString());.