JavaScript indexOf String函数第二个参数不起作用

时间:2016-02-21 11:40:42

标签: javascript

出于某种原因,我的indexOf 2nd arg(从何处开始搜索)无效。它总是返回4或-1。 字符串测试=" Bob jr"我在about:blank:

上使用内置的JavaScript控制台
> var test = "Bob jr";
> test.indexOf('j', 0);
< 4 = $3
> test.indexOf('j', 1);
< 4 = $3
> test.indexOf('j', 12);
< -1 = $2

为什么这不起作用,我怎样才能使它正常工作?

3 个答案:

答案 0 :(得分:5)

无论您是开始查看0还是索引1j仍然是索引4

你的最后一个例子证明了 的论点是有效的,因为你说是在j之后(完全超出字符串的结尾)开始,当然,它没有&#39;找到它。

让我们看看indexOf的第二个参数:

&#13;
&#13;
var str = "j and j and j x";
snippet.log("Search string: '" + str + "'");
for (var n = 0; n < str.length; ++n) {
  test(str, n);
}
function test(s, start) {
  var index = s.indexOf("j", start);
  snippet.log("Starting at " + start + ": " + index);
}
&#13;
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;
&#13;
&#13;

如果你想知道你所指定的索引到j后多远,你可以通过两种方式做到这一点:

  1. 从您得到的结果中减去索引:

    console.log("Distance: " + (test.indexOf('j', 1) - 1));
    
  2. 搜索子字符串:

    console.log("Distance: " + test.substring(1).indexOf('j');
    

答案 1 :(得分:0)

查看indexOf here

的文档
str.indexOf(searchValue[, fromIndex])

在第12位之后没有j,这就是你在最后一个案例中得到-1的原因。

答案 2 :(得分:0)

indexOf总是在第一次出现的指定值starting the search at fromIndex. 的调用String对象中返回索引。返回值不变的原因是&#34; j&#34;仍然是字符串中的第5个字符,无论您是否开始在字符串中搜索几个字符。