问题描述
我正在尝试检查密码字符串是否包含一些特殊字符。
我正在尝试使用以下代码来实现这一点:
const passwordArr = "A1b2c3d4e5!@#".split("");
const specialChar = "~!@#$%^&*_-+=`|(){}[]:;\"'<>,.?/";
const hasspecLet = passwordArr.some((letter) => {
specialChar.includes(letter);
});
但是,hasspecLet返回false
。
解决方法
您在传递给return
的函数中缺少some()
语句:
const hasSpecLet = passwordArr.some((letter) => {
return specialChar.includes(letter);
});
或仅使用简短版本(不包含花括号):
const hasSpecLet = passwordArr.some(letter => specialChar.includes(letter));
请参见MDN
,在箭头功能内使用{ }
时,必须使用return
关键字O.W。值默认返回。
const passwordArr = "A1b2c3d4e5!@#".split("");
const specialChar = "~!@#$%^&*_-+=`|(){}[]:;\"'<>,.?/";
const hasSpecLet = passwordArr.some((letter) => {
return specialChar.includes(letter);
});
console.log(hasSpecLet);
,
由于箭头函数使用花括号,因此您需要使用return
:
const passwordArr = "A1b2c3d4e5!@#".split("");
const specialChar = "~!@#$%^&*_-+=`|(){}[]:;\"'<>,.?/";
const hasSpecLet = passwordArr.some((letter) => {
return specialChar.includes(letter);
});
console.log(hasSpecLet);
或执行以下操作:
const passwordArr = "A1b2c3d4e5!@#".split("");
const specialChar = "~!@#$%^&*_-+=`|(){}[]:;\"'<>,.?/";
const hasSpecLet = passwordArr.some((letter) =>
specialChar.includes(letter)
);
console.log(hasSpecLet);
,
这个小小的变化将使其起作用-
const passwordArr = "A1b2c3d4e5!@#".split("");
const specialChar = "~!@#$%^&*_-+=`|(){}[]:;\"'<>,.?/";
const hasSpecLet = passwordArr.some((letter) =>
specialChar.includes(letter)
);
console.log(hasSpecLet)
上述更改将确保返回由-specialChar.includes(letter)
处理的值,并将其用于父函数中以给出最终结果。
在您的情况下,所有字母均未返回真实值,因此在每种情况下您都将得到错误的信息
,使用some()和include()
const hasSpecLet = passwordArr.some((letter) => specialChar.includes(letter))
使用路口
const hasSpecLet = passwordArr.filter(value => specialChar.split('').includes(value)).length !== 0