今天看JS的数组
的lastIndexOf()
方法,看书上的例子,怎么看都觉得不对劲。后来详细读了几遍解释,用java也测试了下,才发现,之前的理解完全是错误的。
String nums="03454666574349";
System.out.println(nums.lastIndexOf("4")); // )12
System.out.println(nums.lastIndexOf("4", 4)); // f)12 //t)4
System.out.println(nums.lastIndexOf("4", 6)); // f)12 //t)4
System.out.println(nums.lastIndexOf("4", 11)); // f)12 //t)10
f)
指明的是我之前的理解,是错误的。t)
是正确的结果。
2. 之前的错误认识
以前以为 s.lastIndexOf(searchingObj, startIndex) 是从s
的索引startIndex
开始,往后找最后那个searchingObj
索引,事实证明是错的。
JS的数组
的lastIndexOf
方法也一样。
3. 正确的事实
事实上,lastIndexOf方法被设定为:
- startIndex开始 |看做把startIndex后面的全砍掉| ,再从后往前(逆向backward)寻找第一个searchingObj的
位置
;(有第二个参数startIndex时) - 从s.length-1索引开始(末尾), 从后往前(逆向backward)寻找第一个searchingObj的
位置
;(无第二个参数startIndex时)
再举个例子:
java:
String s=”012345678901234”;
System.out.println(s.lastIndexOf(“2”, 4));
相当于: String s=”012345678901234“;
1). 先找到起始索引4;
2). 砍/忽略掉后面的字符;
3). 从后往前找第一个: 得到结果:2
JS:
s=[0,1,2,3,4,5,6,7,8,9,0,1,2,3,4]
s.lastIndexOf(2,4)
2
—[2014-08-08]—
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 hi@niewj.com