何时将数组的索引与-1进行比较?

3

我看到过很多代码将数组的索引与-1进行比较,例如:

if (index === -1)

这到底是做什么的?

我相信我们不能在负索引中存储值,至少不作为数组元素。 (我知道,作为数组的属性,我们确实可以这样做)。但是那么上述条件何时会返回true或false?


1
作为对 @Joseph the Dreamer 答案的补充:在“美观度”比较方面,有时使用按位运算符“~”。它等于表达式 -(n+1)。因此,您可以编写类似以下的代码:if ( ~str.indexOf(...) ) { console.log('Found!') } - Salasar
2个回答

12

通常与 数组字符串indexOf 操作一起使用。当值不在数组中时,indexOf 返回 -1。否则,它返回第一个匹配项的从零开始的索引。

您上面的条件可能检查的是数组中不存在该项。


1
是的,在任何人问之前,对于Array#indexOfString#indexOf(以及Array#findIndex),它是可靠的-1,而不仅仅是一个负数。当然,其他函数可能会有所不同,请检查其规范。 - T.J. Crowder
1
...而-1是特别选择的,因为正如OP所提到的,“我们不能在负索引中存储值”,因此它适用于“未找到”值。 - Sergey

0

考虑下面的代码

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var index = fruits.indexOf("Apple"); 

if(index != -1) {
alert ("Apple found at " + index)
} else {
alert ("Apple not in exists")
}

如果值存在,则数组的 indexOf 返回值的索引号(0 或 1 或 2),但如果该值不存在,则返回 -1。

谢谢!


你可能把比较搞反了。无论如何,约瑟夫几分钟前已经讲过这个问题了。 - T.J. Crowder
当我开始打我的答案时,我没有看到他的回复,而且当我在打我的答案时花了一些时间,Joseph比我快了一点。 - Aefits
@Shahid 你代码中的索引值为2。当 index=== -1 成立时,为什么应该显示 Apple found at + index - Saurabh Tiwari
@Suarabh - 我已经更正了if条件,感谢你指出。 - Aefits

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接