Javascript &引用;找不到元素时为什么indexOf返回-1;
例如:日志[0]中没有“pizza”,因此它返回-1,这导致x返回false 我知道如果它没有找到事件,它将返回-1 我的问题是为什么它返回-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
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
}