Как i получает значение 3 если в массиве 4 элемента?

const users_account = [{
    name: 'Вася',
    login: 'Vasya123',
    password: 'Vasya'
  },
  {
    name: 'Петя',
    login: 'Petya123',
    password: 'Petya'
  },
  {
    name: 'Дима',
    login: 'Dima123',
    password: 'Dima'
  },
  {
    name: 'Тима',
    login: 'Tima123',
    password: 'Tima'
  }
]
// const и let можно заменить на var если вы этого не проходили ещё
let user_asw = {
  login: prompt('login'),
  password: prompt('password')
}

for (let i = 0; i < users_account.length; i++) {
  if (user_asw.login === users_account[i].login && 
         user_asw.password === users_account[i].password) {
    alert('Привет, ' + users_account[i].name);
    break;
  } else if ( ** i ** === users_account.length - 1 ** ) {
    alert('Такого пользователя нету :( ');
  }
}

Ответы (1 шт):

Автор решения: Vasily

Нумерация значений в массивах начинается с нуля:

const array = ["one", "two", "three", "four"]

console.log(array[0])
// one

console.log(array[3])
// four

console.log(array.length)
// 4

А i в Вашем цикле начинается с нуля let i = 0, который заканчиваться когда достигает длинны массива (4), т.е первый прогон i -> 0, второй i -> 1, третий i -> 2, четвертый i -> 3.


Если вычитать единицу:

} else if (i === users_account.length - 1) {
  alert("Такого пользователя нету")
}

то i будет равно от 1 до 3, а длинна массива будет равна 4 - 1, т.е i === 3.

Вопрос в том какая именно проверка и на что Вам нужна.

→ Ссылка