2015-10-12 2 views
-4

У меня есть массив слов (25 из них, 0-24), и я хочу делать тесты в цикле for, который проверяет, находится ли случайно выбранное слово внутри интервал 0-4, 5-9, 10-14 и т. д.Проверьте, не находится ли какое-либо слово в пределах разных интервалов массива

Как это сделать?

else if (words[i > 4 && <= 9]){} 

Я попробовал эту линию в for цикле, но это дает мне ошибку синтаксиса.

Uncaught SyntaxError: Unexpected token <= 
+0

Я пытаюсь проверить, является ли i любым из чисел 5,6,7,8 или 9. Извините, плохо написано. Я делаю игру палача, и если 'words [i]' находится в любой из этих позиций, я хочу написать строку: 'document.getElementById (" showHint "). InnerHTML =" Подсказка: поле study ";' –

+3

Измените свой вопрос, чтобы уточнить, что вы просите. Это предпочтительнее добавления комментариев. Благодаря! –

+2

Ваш вопрос страдает от проблемы [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem), где вы описываете свою ошибку, но не фактическую проблему, которую вы пытаетесь решать. Мы можем помочь, только если мы знаем цель, и мы ВСЕГДА можем предложить лучшую помощь, если мы точно знаем, что вы пытаетесь выполнить (не только текущая ошибка, с которой вы сталкиваетесь). – jfriend00

ответ

1

Вам не хватает левого сравнения в вашем состоянии. Используйте это как условие:

i > 4 && i <= 9 

Однако обратите внимание, что вы не делаете ничего полезного с условием. Ваш результат будет сродни words[true] или words[false].

Update

Вы теперь разработали немного больше. Если я правильно вас понимаю, вы хотите выбрать случайное слово из своего массива, а затем выяснить, какой интервал из 5 находится внутри массива.

В приведенном ниже примере интервал индексируется; так 0 = 0-4, 1 = 5-9, 2 = 10-14 и так далее ...

var words = [ "Synergetic", "unsteeped", "goldcup", "coronach", "swamper", "rehearse", "rusty", "reannotation", "dunne", "unblenched", "classification", "interpolation", "toper", "grisliest.", "Rechart", "imbower", "reilluminating", "glucagon", "interassuring", "parallelepipedon", "doyenne", "neenah", "tetragram" ]; 
 

 
function pickARandomWordAndCheckTheInterval(){ 
 
    
 
    var randomIndex = Math.floor(Math.random() * words.length); 
 

 
    var word = words[randomIndex] 
 
    var interval = Math.floor(randomIndex/5); 
 
    
 
    console.log('The random word is:' + word); 
 
    console.log('The interval is:' + interval); 
 
    
 
} 
 

 
pickARandomWordAndCheckTheInterval();

+1

@JohnKugelman Он указал на интерес к тестированию чисел 5,6,7,8 или 9. Я не могу предположить, почему он будет использовать true/false для индексации массива/объекта. Не думайте, что нисходящий поток необходим. – shennan

+0

Это помогает мне шеннан, уже поздно, и я устал .. Извините за то, что задал глупые вопросы. Спасибо! –

+0

@JohnKugelman Прежде чем он отредактировал свой комментарий, он просто прочитал: «Я пытаюсь проверить, является ли i одним из чисел 5,6,7,8 или 9». Для меня это был зеленый свет. Я не говорю, что это окончательный ответ, но я думаю, что он добавляет что-то. – shennan

-1

Чтобы объяснить это на самом деле очень простой способ вы просто забыли рассказать языка, что должно быть меньше или равно 9.

вы предположили, что это обрабатывает логическое условие, как это делают люди (мы предполагаем, что после & & оператора вы все еще думаете о I, но это не то, что JS интерпретатор будет делать) ,

Что необходимо после & & должно быть выражением, которое может быть оценено. <= 9 не оценивает значение (оно не рассматривается как допустимое выражение, потому что <= является видом бинарного оператора, для которого требуются два операнда, один до и один после).

Для интерпретатора JS это означает «меньше или равно 9». Но что такое «меньше или равно 9»? Вам нужно сказать, что «i меньше или равно 9».

i > 4 && i <= 9 - это правильный способ написать это.

+0

Это хорошая разработка на ответе @ shennan, но у нее есть та же проблема, что и не полный ответ. Я хотел бы поддержать это, если бы вы могли обратиться к его истинному основному вопросу (что может потребовать, чтобы он объяснил это лучше). –

+0

Я нахожу эту разработку прекрасной и довольно точной для вопроса. Проблема в том, что автор вопроса все еще формирует объяснение того, чего он на самом деле хочет достичь. И, несмотря на реальный фон (это еще не раскрыто), он действительно совершил ошибку, о которой я писал :) И, как уже заметил кто-то еще, я не думаю, что для ответа нужно, чтобы downvote был необходим. Это просто пахнет псевдо-академической придирчивостью. Лучше займитесь вопросом. –

+0

Вопрос был ясен: «Я пробовал эту строку в цикле for, но это дает мне синтаксическую ошибку». И я объяснил, почему это так. –

Смежные вопросы