javascript - 为什么 indexOf 在按原样使用时与将其与 -1 进行比较时的工作方式不同?

标签 javascript indexof

似乎找不到答案可能是因为我缺乏谷歌搜索经验,而且 indexOf 的 mozilla 页面似乎没有回答

//this returns -1 because it can't find 'ca' within cat
var randomArr = ['dog', 'cat', 'bird', 'cheetah'];
console.log(randomArr.indexOf('ca'));

//this returns 1 which is correct, but why?
var randomArr = ['dog', 'cat', 'bird', 'cheetah'];
for (var i = 0; i < randomArr.length; i++) {
  if (randomArr[i].indexOf('ca') !== -1) {
    console.log(i);
  }
}

我不明白为什么这在使用 indexOf 时会有所不同。为什么在一种情况下需要精确的字符串匹配,而在另一种情况下不需要?

最佳答案

在第一种情况下,您在数组 上调用.indexOf。这将返回所传递参数的完全匹配的索引(如果未找到,则返回 -1)。

但是当你这样做的时候

randomArr[i].indexOf('ca') !== -1

randomArr的每一项都是一个字符串,所以randomArr[i]也是一个字符串。调用 randomArr[i].indexOf 调用 String.prototype.indexOf,它返回正在搜索的字符串中子字符串的索引(如果未找到,则返回 -1)。

因为 'cat''ca' 作为子字符串,ccat 中的索引返回(即 0)。

这些方法具有相同的名称,但它们却大不相同。

关于javascript - 为什么 indexOf 在按原样使用时与将其与 -1 进行比较时的工作方式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60200656/

相关文章:

javascript - 通过名称定位图层后查找图层的索引#

javascript - JavaScript 中的 indexOf 方法

java - System.nanoTime 有什么问题?

javascript - LoopBack 字段过滤器不起作用

javascript - 如何使用 chat.postmessage 作为工作区用户发布松弛消息?

javascript - 如何使用 puppeteer 获取 HTML 元素文本

Javascript - 返回意外结果的函数

javascript - jQuery UI 可拖动 - 滚动垂直和水平问题

javascript - PHP 生成的输出未触发 JS 函数

javascript - JQuery index() - 哪条路?