【发布时间】:2018-06-15 11:05:25
【问题描述】:
str.indexOf(searchValue[, fromIndex])
searchValue 第一次出现的索引,如果没有找到,则为 -1。
如果在数组中找不到匹配项,为什么-1 会被.indexOf 选为返回值?
console.log([].indexOf()) // -> -1
不是更适合0吗?这是有道理的,因为确实有 0 匹配元素。这样我们就可以直接在条件语句中使用它,例如:
if( Array.indexOf(String) ) { ... }
代替
if( Array.indexOf(String) !== -1 ) { ... }
这是为什么呢?有什么特别的原因吗?我在 Java、C++ 和 C 中都看到过相同的情况。这是因为原生函数是如何设计的吗?
【问题讨论】:
-
该函数返回第一个 index (即位置)找到该值的位置。请记住,在您提到的所有语言中,数组的第一个索引是
0。 -
数组的第一个索引是0:
[1,2,3].indexOf(1) :0 -
它显示的是位置,它不仅仅是一个是否存在的布尔值
-
有一类问题几乎总是被否决或被阻止,那就是架构设计问题。我其实很喜欢建筑设计问题。通过理解这些,可以在计算机科学中获得很多见解。 Ivan 提出了一个非常基本的问题,但它讨论了原始 1 与 0 数组寻址,以及将错误代码折叠到结果中。我认为斯蒂芬劳赫阻止了这一点,以限制明显的答案。 FORTRAN、PASCAL 和 Lua 是 1 来源,但 C、python 和 Javascript 等较新的语言往往是 0 来源。
标签: javascript indexof