vovvkka
@vovvkka

Как проверить одинаковые данные?

Есть input, в котором вводится имя, затем, когда пользователь нажимает кнопку войти, должно проверяться, если пользователь с таким именем уже есть в объекте взятого из localStorage, то ничего не должно добавляться, а если есть, то добавить.

Я использовал цикл for, но получается так, что когда цикл запускается, он добавляет 2 раза пользователя который уже есть в объекте, и 1 раз нет, так как сравнение if выдало false, вот код:
const usernameInput = document.querySelector('input[name="username"]'); // Допустим 'Rebecca'
    const passwordInput = document.querySelector('input[name="password"]');
    const loginSubmit = document.querySelector('.log-in-submit');

    let users = {
        users: [
            {name: 'Ann'},
            {name: 'George'},
            {name: 'Rebecca'}
        ]
    };

    localStorage.setItem('users', JSON.stringify(users.users));

    loginSubmit.addEventListener('click', () => {
        const getUsers = JSON.parse(localStorage.getItem('users'));
        const username = usernameInput.value; //  "Rebecca"

        const checkUserInUsers = (name) => {
            for (let i = 0; i < getUsers.length; i++) {
                if (getUsers[i].name !== name) {
                    setNewUser(name);
                } else {
                    console.log('Пользователь уже есть.')
                    break;
                }
            }
        }
        checkUserInUsers("Rebecca")

 const setNewUser = (username, password) => {
        users.users.push({name: userName});
        localStorage.setItem('users', JSON.stringify(users.users));
    };
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Метод массива find() поможет найти, есть ли в массиве объект, удовлетворяющий требованию (вернёт этот объект или undefined)
const users = [
  {name: 'Ann'},
  {name: 'George'},
  {name: 'Rebecca'}
];

if (users.find(user => user.name === 'Rebecca')) {
  // уже есть такой юзер
} else {
  // добавляем
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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