【问题标题】:Check if a word is within various sub-intervals of an array检查一个单词是否在数组的各个子区间内
【发布时间】:2015-10-12 23:53:13
【问题描述】:

我有一个单词数组(其中 25 个,0-24),我想在 for 循环中进行测试,检查随机选择的单词是否在 0-4、5-9、10-14 区间内等等。

我该怎么做?

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

我在 for 循环中尝试了该行,但它给了我一个语法错误。

Uncaught SyntaxError: Unexpected token <=

【问题讨论】:

  • 我正在尝试检查 i 是否是数字 5、6、7、8 或 9 中的任何一个。对不起,写得不好。我正在制作一个刽子手游戏,如果words[i] 处于这些位置中的任何一个,我想写一行:document.getElementById("showHint").innerHTML = "Hint: A field of study";
  • 请编辑您的问题以澄清您的要求。这比添加 cmets 更好。谢谢!
  • 您的问题受到 XY problem 的影响,您在其中描述了错误,而不是您要解决的实际问题。我们只有在知道目标的情况下才能提供帮助,而且如果我们确切地知道您要完成的工作(而不仅仅是您当前面临的错误),我们总是能够提供更好的帮助。

标签: javascript arrays syntax-error


【解决方案1】:

您的病情缺少左侧比较。以此为条件:

i > 4 && i <= 9

但是,请注意,您没有对条件做任何有用的事情。您的结果将类似于 words[true]words[false]

更新

您现在已经详细说明了一点。如果我理解正确,您想从数组中选择一个随机单词,然后计算出它在数组中的哪个区间 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();

【讨论】:

  • @JohnKugelman 他指定了对测试数字 5、6、7、8 或 9 的兴趣。我不知道他为什么会使用 true/false 来索引数组/对象。不要认为没有必要投反对票。
  • 这对我有帮助,深南,这里已经很晚了,我很累..抱歉问了一些愚蠢的问题。谢谢!
  • @JohnKugelman 在编辑他的评论之前,它只是简单地写着:“我正在尝试检查 i 是否是数字 5、6、7、8 或 9 中的任何一个”。那对我来说是一盏绿灯。我并不是说这是确定的答案,但我确实认为它增加了一些东西。
  • @JohnKugelman 感谢您删除所有 cmets 以及我们对话的所有上下文。
【解决方案2】:

要解释它真的很简单,你只是忘了告诉语言什么需要小于或等于 9。

您假设它像人类一样处理逻辑条件(我们假设在 && 运算符之后您仍在考虑 i,但这不是 JS 解释器会做的)。

&& 之后的内容必须是可以计算的表达式。 &lt;= 9 不计算为值(它不被视为有效表达式,因为&lt;= 是一种二元运算符,需要两个操作数,一个在前面,一个在后面)。

对于 JS 解释器,它只是意味着“小于或等于 9”。但什么是“小于或等于 9”?您需要告诉它“i 小于或等于 9”。

i &gt; 4 &amp;&amp; i &lt;= 9 是正确的写法。

【讨论】:

  • 这是对@shennan 答案的一个很好的阐述,但它也有同样的问题,即不是一个完整的答案。如果您能解决他真正的潜在问题(这可能需要让他更好地解释),我很乐意对此表示赞同。
  • 我发现这个问题的阐述很好而且非常准确。问题是问题的作者仍在塑造他真正想要实现的目标的解释。尽管有真实的背景(尚未被发现),但他实际上犯了一个我写的错误:)而且正如其他人已经注意到的那样,我认为没有必要投票反对。它只是闻起来像伪学术挑剔。你最好对这个问题投反对票。
  • 问题很明确:“我在 for 循环中尝试了该行,但它给了我一个语法错误。”我解释了为什么会这样。
猜你喜欢
  • 2019-01-06
  • 2014-05-18
  • 2022-06-22
  • 2017-12-02
  • 1970-01-01
  • 2021-05-16
  • 2010-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多