#javascript #arrays #array-formulas
#javascript #массивы #массив-формулы
Вопрос:
Я пытаюсь проверить, содержит ли строка пароля какие-либо специальные символы.
Я пытаюсь реализовать это с помощью следующего кода:
const passwordArr = "A1b2c3d4e5!@#".split("");
const specialChar = "~!@#$%^amp;*_- =`|(){}[]:;"'<>,.?/";
const hasSpecLet = passwordArr.some((letter) => {
specialChar.includes(letter);
});
Однако hasSpecLet возвращает false
.
Ответ №1:
Вам не хватает return
инструкции в функции, которую вы передаете some()
:
const hasSpecLet = passwordArr.some((letter) => {
return specialChar.includes(letter);
});
Или просто используйте более короткую версию (без фигурных скобок):
const hasSpecLet = passwordArr.some(letter => specialChar.includes(letter));
Смотрите MDN
Комментарии:
1. ага, понятно — спасибо. Означает ли это, что если я собираюсь использовать блок возврата, у меня должно быть ключевое слово return?
2. @EddieLam, если вы не используете функциональное выражение (то есть однострочное выражение), вам нужно явно
return
указать значение
Ответ №2:
всякий раз, когда вы используете { }
функцию со стрелкой внутри, вы должны использовать return
ключевое слово O.W. значения возвращаются по умолчанию.
const passwordArr = "A1b2c3d4e5!@#".split("");
const specialChar = "~!@#$%^amp;*_- =`|(){}[]:;"'<>,.?/";
const hasSpecLet = passwordArr.some((letter) => {
return specialChar.includes(letter);
});
console.log(hasSpecLet);
Ответ №3:
Это небольшое изменение заставит его работать —
const passwordArr = "A1b2c3d4e5!@#".split("");
const specialChar = "~!@#$%^amp;*_- =`|(){}[]:;"'<>,.?/";
const hasSpecLet = passwordArr.some((letter) =>
specialChar.includes(letter)
);
console.log(hasSpecLet)
Вышеуказанное изменение гарантирует, что значение, обработанное с помощью — specialChar.includes(letter)
, будет возвращено и использовано в родительской функции для получения конечного результата.
В вашем случае ни одна из букв не возвращала значение true, и, следовательно, вы получили бы false в каждом случае
Ответ №4:
Используя some() и include()
const hasSpecLet = passwordArr.some((letter) => specialChar.includes(letter))
Используя пересечение
const hasSpecLet = passwordArr.filter(value => specialChar.split('').includes(value)).length !== 0
Ответ №5:
Вам нужно использовать return
, поскольку функция arrow использует фигурные скобки:
const passwordArr = "A1b2c3d4e5!@#".split("");
const specialChar = "~!@#$%^amp;*_- =`|(){}[]:;"'<>,.?/";
const hasSpecLet = passwordArr.some((letter) => {
return specialChar.includes(letter);
});
console.log(hasSpecLet);
Или выполните следующие действия:
const passwordArr = "A1b2c3d4e5!@#".split("");
const specialChar = "~!@#$%^amp;*_- =`|(){}[]:;"'<>,.?/";
const hasSpecLet = passwordArr.some((letter) =>
specialChar.includes(letter)
);
console.log(hasSpecLet);