@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)
	}
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Includes возвращает false при проверке наличия элемента массива, если такого элемента в массиве нет.
Что вы проверяете вы не привели, поэтому это всё, что можно ответить на такой вопрос.

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

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

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Artezio Санкт-Петербург
от 160 000 до 220 000 ₽