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

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

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

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

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