关于javascript中lastIndexOf的混淆

时间:2018-02-07 11:46:02

标签: javascript

 var a="bananas";
 a.lastIndexOf("a",1)  /// output is 1
 a.lastIndexOf("a",2)  /// output is 1
 a.lastIndexOf("a",4)  /// output is 3

任何人都可以解释一下这两种情况的输出是如何变为1的 我知道它试图从上一端开始匹配,但我无法理解官方文档中的逻辑

3 个答案:

答案 0 :(得分:0)

请阅读W3Schools

上有关定义和用法的段落

lastIndexOf()方法返回字符串中最后一次出现指定值的位置。

  

如果要搜索的值永远不会发生,则此方法返回-1。

     

注意:lastIndexOf()方法区分大小写!

     

提示:另请参阅indexOf()方法。

<强>语法

  

string.indexOf( searchvalue,start

参数值

  

搜索(必需要搜索的字符串开始

     

值(可选,默认值:0 开始的位置搜索

您的例子:

var a = "bananas";
a.lastIndexOf("a",1)  // output is 1
a.lastIndexOf("a",4)  // output is 3

a.lastIndexOf("a",1)会搜索最后一个&#39; a&#39;在香蕉中,其指数<= 1。

这意味着它将返回a的最后位置。

所以a.lastIndexOf("a",4)会搜索最后一个&#39; bana&#39;。

确实有点令人困惑。但请记住, value 参数实际上会修剪给定位置的字符串,因为函数将从该位置向后搜索。

答案 1 :(得分:0)

lastIndexOf()向后搜索,因此在您的示例中,计数器将如下所示:

b a n a n a s
7 6 5 4 3 2 1
            ^

.lastIndexOf(&#39; a&#39;,1)将为1,因为从第1位开始,我们首先看到&#39; a&#39;在第1位

b a n a n a s
7 6 5 4 3 2 1
      ^
  3 2 1

.lastIndexOf(&#39; a&#39;,4)将是3,因为从第4位开始,我们首先看到&#39; a&#39;在第3位。

答案 2 :(得分:-1)

lastIndexOf()方法返回字符串中最后一次出现指定值的位置。

定义和用法

string.lastIndexOf(searchvalue, start)

<强>参数

  • searchvalue (必填)要搜索的字符串

  • start (可选)开始搜索的位置(向后搜索)。如果省略,则默认值为字符串的长度