检查数组是否包含一些特殊字符

问题描述

我正在尝试检查密码字符串是否包含一些特殊字符。
我正在尝试使用以下代码来实现这一点:

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