@Lorelin
Student web

Как исправить цикл while?

Здравствуйте, есть код:
spoiler
function User (firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
    
    let date = new Date();
    this.regDate = date.toLocaleDateString() + ' ' + date.toLocaleTimeString();
}

function UserList (User) {
    this.users = [];

    this.addUser = function(User){
        this.users.push(User);
    }

    this.getAllUsers = function(){
        for (let eachUser of this.users) {
            console.log(eachUser);
        }
    }
}

arr = new UserList;

while(true){
    newUser = prompt('Введите имя и фамилию') 
    if (newUser != null) {
        userName = newUser.replace(/\s+/g, ' ').trim().split(' ', 2);
        reg = new User(userName[0], userName[1]);
        arr.addUser(reg);
    }
    if (newUser === null) {
        arr.getAllUsers();
        break;
    }
    // if (newUser === '' || User.lastName === undefined) {
    //     alert('Вы не ввели данные!')
    //     continue;
    // }
}


Как добиться того, что бы цикл не пускал дальше пустые prompt или с 1 аргументом? Снизу закомментировал свою последнюю попытку) Пытался через lenghth, но выяснилось, что в любом случае длина будет 2.. И так-же как сделать чтобы не правильные данные не заносились в массив?
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
Tim-A-2020
@Tim-A-2020 Куратор тега JavaScript
while (true) {
  newUser = prompt('Введите имя и фамилию');
  if (!newUser && newUser !== null) {
    console.log('Вы не ввели данные!');
    continue;
  }
  if (newUser != null) {
    userName = newUser.replace(/\s+/g, ' ').trim().split(' ', 2);
    if (userName.length < 2) {
      console.log('Введите имя и фамилию');
      continue;
    }
    reg = new User(userName[0], userName[1]);

    console.log('есть данные', reg);
  }
  if (newUser === null) {
    console.log('отмена');
    break;
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
25 янв. 2021, в 10:22
4000 руб./за проект
25 янв. 2021, в 10:12
1500 руб./за проект