indexOf:返回一个指定字符串值的最初出现位置,它是从左往右查找的
lastIndexOf:返回一个指定字符串值的最后出现位置,它是从右往左查找的
图片1也证明该原理,所以当索引是0和1,"ell"首次出现的位置是1,因为它找到完整的字符串"ell",而索引是2,位置则是6,因为它找到的是部分字符串片段
但是图2这里为什么当索引是7、8和9时,返回值都是7,为什么不是-1?不是应该索引是10或者更大一些,返回值才是7吗?
它是从右往左查找的,当索引为7、8和9时,从右往左查找不是找不到完整的"code"吗?只能找到部分片段,为什么还能找到位置?
'abab'.lastIndexOf('ab', 2)// 将返回 2 而不是 0, 因为fromIndex只限制待匹配字符串的开头。
(例如'abadefgabm'.lastIndexOf('ab', 7) 返回7,虽然查找的'ab'中的b已经在 index=8的位置了从index=7的a处向左查找仍是能找到自身a加上其后连成ab,因为fromIndex指的是待匹配字符串的开头那一个)
cosnt str = "01234", str2 = "234";
分解步骤:
str.lastIndexOf(str2, 3);
对比 index = 3
[str2][0] != [str][3]
[str2][1] != [str][4]
[str2][2] != [str][5]
往前 index = 2
[str2][0] == [str][2]
[str2][1] == [str][3]
[str2][2] == [str][4]
结果2
str.lastIndexOf(str2, 1);
对比 index = 1
[str2][0] != [str][1]
[str2][1] != [str][2]
[str2][2] != [str][3]
结果false
往前 index = 0
[str2][0] != [str][0]
[str2][1] != [str][1]
[str2][2] != [str][2]
结果false
所以结果为-1
大致可以这么理解一下
你设置了开始位置,就是从开始位置往左找了。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!