тестов на скриншоте:
function validatePIN (pin) {
console.log(pin)
let newArr = pin.split('');
let twoArr = []
for (let i = 0; i < newArr.length; i++) {
if (newArr[i] == "-" || newArr[i] == "." || newArr[i] == ' ') {
return false }
if (Number(newArr[i]) || Number(newArr[i]) == 0) {
console.log(`${newArr[i]} - является цифрой`)
twoArr.push(newArr[i]);
} else {
console.log(`${newArr[i]} Не цифра`)
}
}
let ourNumber = ''
for (let i = 0; i < twoArr.length; i++) {
ourNumber += twoArr[i]
}
console.log(`ourNumber = ${ourNumber}`)
if (ourNumber.length !== pin.length) {
return false
}
return ourNumber.length == 4 || ourNumber.length == 6 ? true : false
}
Делаем проверку +pin на нан и возвращаем если трю фалсе, а после превращаем это в массив и проверяем ленф
А у меня не достаточно разве в if просто перевести это в Number и все. Если тру - то бежим дальше по условию. У меня ошибка с "пробелом" в конце. Я не знюа как пофиксить
Я написал решение полностью
Так это не пройдет все тесты. В тестах может быть и - и плавающая точка и буква.
const number = +pin; if(isNaN(number)) return false; return (pin.length == 4 || pin.length == 6);
Поменял :)
Можешь ещё поменять +number)
function validatePIN(pin) { return /^(\d{4}|\d{6})$/.test(pin); }
А как сделать такие регулярки? Я что-то не пойму :(
https://learn.javascript.ru/regular-expressions Тут можно почитать на самом деле я пытался разными способами !!!осторожно, плохой код function validatePIN (pin) { if (pin.length === 4 || pin.length === 6) { let arr = [...pin].map( (item) => +item ) for (let i of arr) { if (isNaN(i)) { return false } } return true } return false } Так не проходит. Можно сделать так: function validatePIN (pin) { for (let i of pin) { if (!isFinite(parseInt(i))) return false; } return pin.length === 4 || pin.length === 6; } Мне кажется пока что тебе не стоит решать задачи на кодварсе, где понятно что надо regexp
Обсуждают сегодня