我试图遍历数组以检查它是否包含任何传递指定函数的项目。我这样做是通过向Array对象添加.any()原型:
tbody
然后调用Array.any(),如:
Array.prototype.any = (comparator) => {
for(let item of this){
if(comparator(item)){
return true;
}
}
return false;
};
然而,这给了我以下错误:
else if(users && users.any((user) => user.userName === user.userName)){
res.status(400).send('Username already in use');
}
在我看来,这个错误就像它暗示着这个'在原型函数中是未定义的,但是这个'是我检查过undefined的用户数组。
不确定究竟是什么导致了这个问题,希望你能提供帮助。
答案 0 :(得分:2)
这里唯一的答案是您没有使用“函数”,因此您的“此”不是您的“用户”。这会起作用:
Array.prototype.any = function(comparator) {
for(let item of this){
if(comparator(item)){
return true;
}
}
return false;
};
然后,当然,只需使用“ some”。
答案 1 :(得分:0)
使用Array.prototype.any()是不必要的,因为我使用mongoose来获取用户,因此我将其更改为让mongoose尝试获取具有受控用户名的单个用户并检查是否已定义。喜欢:
const checkUniqueUserName = (user, res, done) => {
User.findOne({"userName": user.userName}, (err, foundUser) => {
if(err){
res.sendStatus(500);
console.log(err);
}
else if(foundUser){
res.status(400).send('Username already in use');
}
else{
done(user);
}
});
};