Javascript &引用;找不到元素时为什么indexOf返回-1;

Javascript &引用;找不到元素时为什么indexOf返回-1;,javascript,Javascript,例如:日志[0]中没有“pizza”,因此它返回-1,这导致x返回false 我知道如果它没有找到事件,它将返回-1 我的问题是为什么它返回-1?这背后有什么原因吗 非常感谢 编辑:问这种问题不好吗?这就是我被否决的原因?对不起 var JOURNAL = [ {"events":["carrot","exercise","weekend"],"squirrel":false}, {"events":["bread","pudding","brushed teet

例如:日志[0]中没有“pizza”,因此它返回-1,这导致x返回false

我知道如果它没有找到事件,它将返回-1

我的问题是为什么它返回-1?这背后有什么原因吗

非常感谢

编辑:问这种问题不好吗?这就是我被否决的原因?对不起

    var JOURNAL = [
      {"events":["carrot","exercise","weekend"],"squirrel":false},
      {"events":["bread","pudding","brushed teeth","weekend","touched tree"],"squirrel":false}]

      function hasEvent(event, entry) {
          var x = entry.events.indexOf(event)

          console.log(x)
          //-1    

      return  x != -1;
    }
      hasEvent('pizza', JOURNAL[0])
这将返回条件语句的结果,
如果
x
不等于
-1
,则返回
true
false
,这就是数组的工作方式

在你的例子中

var array = [2, 9, 9];
array.indexOf(2);     // 0
array.indexOf(7);     // -1
您的方法
hasEvent()
返回
x
indexOf
数组上的值
events

var events =  ["carrot","exercise","weekend"];
events .indexOf("carrot");     // 0
events .indexOf("csarrot");     // -1

indexOf
如果未找到
事件,则返回
-1
。所以,
x=-1
表示发现
事件。

来源:

indexOf()方法返回数组中可以找到给定元素的第一个索引,如果该元素不存在,则返回-1


考虑到这一点,检查
x!=-1
表示检查是否在
条目中找到
事件
。事件
数组,换句话说,“返回是否在数组中找到对象”。

使用
索引
在数组中搜索时,返回元素索引。在数组中,索引以
0
开头。所以第一个元素将有索引
0
,依此类推

但如果未找到元素,则返回
-1

所以当你说
x!=-1
,表示数组中存在搜索元素

依照

JavaScript数组的索引为零:数组的第一个元素位于索引0处,最后一个元素位于等于数组长度属性值减去1的索引处

有关
indexOf
的更多信息,请检查

我的问题是为什么它返回-1

因为函数
array.indexOf
就是这样指定的:

indexOf()方法返回数组中可以找到给定元素的第一个索引,如果该元素不存在,则返回-1。资料来源:

这背后有什么原因吗

这有一个逻辑原因:JavaScript中的数组是0索引的。因此,范围(0,…,array.length-1)中的所有值都是有效的索引值,即当元素位于数组中时,可能会返回这些值。将array.length返回为“未找到”将相当尴尬,因为这将迫使调用方始终检查array.length以解释该值

因此,
-1
始终是表示未找到的明显值,因为它从来都不是有效的索引值

什么是x!=-我的意思是


这意味着如果找到函数的参数
event
,则函数
hasEvent
将返回
true
,如果未找到,则返回
false

-1被使用,因为它是数组中第一个可能是最值得记忆的数字,不会被误认为是实际索引


任何零或更大的数字都可以是一个索引,没有理由因为有一些随机的“幻数”而使事情复杂化。

如果x!=-1,否则为假。检查文档:我想没有特别的原因。但是当一些东西没有找到时返回-1是很常见的,因为说明书上说是这样的——可能是@Sotra的复制品,我想你被否决了,因为标题不好。您的标题有“x!=-1是什么意思?”但您真正想知道的是“当找不到元素时,为什么indexOf返回-1”。你可能想知道-1而不是null、未定义等的历史原因是什么。它正确吗?是的,我理解,但我只想知道为什么是-1?@Sotra你希望它返回什么数字?只是想知道它返回-1的原因是什么。。但既然没有人回答这一部分,那么我想也就没有理由了。因为这是第一个也是最值得纪念的返回值,不会被误认为是一个实际的索引。
var events =  ["carrot","exercise","weekend"];
events .indexOf("carrot");     // 0
events .indexOf("csarrot");     // -1
function hasEvent(event, entry) 
{
      var x = entry.events.indexOf(event); 
      return  x != -1; // if the event was found in entry.events array then it will return the index of the item otherwise -1
}