@LoranDeMarcus

Где ошибка в проверка ввода?

Проверка ввода не дает добавить пользователя. Что-то не так в функции ValidateUser.
Нужен свежий взгляд, у меня уже мозг потек
var usersData = [];

function ValidateUser (id, name, email) {
    //language=JSRegexp
    const nameRegExp = /[a-zA-Z]+/g;
    const emailRegExp = /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/;
    const idCheck = (id > usersData.length || id < usersData[0] || id === undefined || id === "");
    const nameCheck = (name === undefined || !(name.match(nameRegExp)));
    const emailCheck = (email === undefined || !(email.match(emailRegExp)));
    return idCheck;
    return nameCheck;
    return emailCheck
}

function AddUser (name, email) {
    if (ValidateUser()) {
        return false
    } else {
        usersData.push({
            id: GetNewUserId(),
            name: name,
            email: email
        });
        return true;
    }
}

function GetNewUserId () {
    if (usersData.id === 0) {
        usersData.id = 1;
    } else {
        var maxId = usersData.reduce((max, item) => item.id > max ? item.id : max, 0);
    }
    return maxId + 1;
}

function UpdateUser (id, name, email) {
    if (ValidateUser()) {
        return false;
    }
    else {
        for (var index = 0; index < usersData.length; index++) {
            if (usersData[index].id === id) {
                usersData[index].email = email;
                usersData[index].name = name;
                break;
                return true;
            }
        }
    }
}

function DeleteUser (id) {
    if (ValidateUser()) {
        return false;
    }
    else {
        for (var index = 0; index < usersData.length; index++) {
            if (usersData[index].id === id) {
                usersData.splice(index, 1);
                return true;
            }
        }
    }
}

function ShowUsers () {
    usersData.forEach(function (item) {
        console.log(item);
    });
}
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
return idCheck;
return nameCheck;
return emailCheck

Вы серьезно?

UPD#1: Примерно так надо: https://jsfiddle.net/yarkov_aleksei/x5gvfrvL/
Доработаете сами ))
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Negwereth
@Negwereth
lvivcss.com.ua
Комментировать
Ivanq
@Ivanq
Знаю php, js, html, css
Алексей Ярков:

return idCheck;
return nameCheck;
return emailCheck

Вы серьезно?

LoranDeMarcus:

Даже без ... все равно проверку на валидацию не проходит. Теперь просто добавляет пользователей без проверки.


Вы серьезно? Когда несколько return подряд, возвращается первый (idCheck). Когда return нет, возвращается undefined, который в if становится false. Нужно сделать
return idCheck && nameCheck && emailCheck;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы