@zzettaqq
Пока учусь

Почему .includes возвращает false?

Проблема состоит в том что .includes возвращает false при проверке наличия элемента массива который должен ввести пользователь при том что этот элемент есть в массиве
var answers = [
	["Зимой и летом одним цветом.", "елка", "ель"],
	["Речка спятила с ума — по домам пошла сама." , "водопровод" , "канализация"],
	["Орехов не ест, сахара не просит, а щипцы с собой носит." , "рак" , "краб"]
	];
	var trueAnswers = 0
	var puzzle = 0
	function findAnswer(userInput){
		if (answers.includes(userInput, 1)){
		//возвращает false при проверке элемента 
			puzzle++
			trueAnswers++
			return alert("Вы угадали.")
		} else {
			puzzle++
			return alert("Вы не угадали.")
		}
	}
	for (var i = 0; i < 3; i++){
		var userInput = prompt((answers[puzzle][0])).toLowerCase()
		findAnswer(userInput)
	}
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Includes возвращает false при проверке наличия элемента массива, если такого элемента в массиве нет.
Что вы проверяете вы не привели, поэтому это всё, что можно ответить на такой вопрос.

На самом деле, конечно, причина в том, что вы проверяете массив массивов на наличие в нём строки, но это не отменяет необходимости задавать вопросы нормально.

Вам нужно поменять структуру данных и отделить вопросы от ответов. А в findAnswer передавать ещё и номер вопроса, чтобы искать только среди его ответов. Ну или сразу туда массив правильных ответов передавать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы