首页 >

详解JavaScript中数组和字符串的lastIndexOf()方法使用

web前端|js教程详解JavaScript中数组和字符串的lastIndexOf()方法使用
js,数组,字符串,lastIndexOf,JavaScript
web前端-js教程
Array.prototype.lastIndexOf 和 String.prototype.lastIndexOf 是非常的实用的方法,不过很多人不知道它其实可以传递两个参数,第二个参数决定了搜索的起始位置:
delphi dll劫持源码,ubuntu怎么退出登录,儿子喜欢养爬虫,被PHP识别的PHP文件,怎么更新seolzw
语法
nutz 源码,vscode插件解析,ubuntu ipopt,模拟tomcat实例,c sqlite3 qt,jquery ajax tab 插件,前端跟随鼠标动画框架,网络爬虫图片代码如何使用,签到php源码,雅安seo优化价格,iis6.1 配置网站,微信中如何访问网页源码,蓝色科技企业织梦模板lzw
str.lastIndexOf(searchValue[, fromIndex])
lastIndexOf() 方法返回指定值在调用该方法的字符串中最后出现的位置,如果没找到则返回 -1。从该字符串的后面向前查找,从 fromIndex 处开始。
微信网页登陆源码下载,vscode编译文件,ubuntu没有man,tomcat url为空,sqlite创建一个表,人类与地底爬虫类战争漫画,php开发效率,seo分别有什么作用,带购物车网站模板,wp前端模板lzw
参数

1.searchValue
一个字符串,表示被查找的值。
2.fromIndex
从调用该方法字符串的此位置处开始查找。可以是任意整数。默认值为 str.length。如果为负值,则被看作 0。如果 fromIndex > str.length,则 fromIndex 被看作 str.length。

区分大小写

lastIndexOf 方法区分大小写。例如,下面的表达式返回 -1:

"Blue Whale, Killer Whale".lastIndexOf("blue"); // returns -1
lastIndexOf的用法

// Create an array.var ar = ["ab", "cd", "ef", "ab", "cd"];// 找到最后一个CD的位置document.write(ar.lastIndexOf("cd") + "
");// 输出: 4// 从正数第二个位置,搜索倒数第一个CD的位置document.write(ar.lastIndexOf("cd", 2) + "
");// 输出: 1// 从倒数第三个搜索最后一个ab的位置document.write(ar.lastIndexOf("ab", -3) + "
");// 输出: 0
同样 String.lastIndexOf的用法类似

"canal".lastIndexOf("a") // returns 3"canal".lastIndexOf("a",2) // returns 1"canal".lastIndexOf("a",0) // returns -1 从第0个往前搜,不存在'a',返回-1"canal".lastIndexOf("x") // returns -1
lastIndexOf的IE8实现

不过微软的IE8及其以下并不支持Array.lastIndexOf,需要兼容实现。可以参考:

if (!Array.prototype.lastIndexOf) { Array.prototype.lastIndexOf = function(searchElement /*, fromIndex*/) { 'use strict'; if (this === void 0 || this === null) {  throw new TypeError(); } var n, k,  t = Object(this),  len = t.length >>> 0; if (len === 0) {  return -1; } n = len - 1; if (arguments.length > 1) {  n = Number(arguments[1]);  if (n != n) {  n = 0;  }  else if (n != 0 && n != (1 / 0) && n != -(1 / 0)) {  n = (n > 0 || -1) * Math.floor(Math.abs(n));  } } for (k = n >= 0   ? Math.min(n, len - 1)   : len - Math.abs(n); k >= 0; k--) {  if (k in t && t[k] === searchElement) {  return k;  } } return -1; };}
可以使用 ES5-Slim 使旧版浏览器完全兼容ES5语法。

为什么要避免使用for in

不过要注意的是,在Array.prototype上面附加方法后,for in语法也会把lastIndexOf方法也枚举出来:

for (var idx in [1,3,5,7,9]) { console.log(idx)}>> 0 1 2 3 4 lastIndexOf
而应该使用 for loop实现

for (var idx = 0; idx < [1,3,5,7,9].length; idx++) { console.log(idx)}
这个问题可以使用 Object.defineProperty 来实现,来避免for in的枚举出lastIndexOf方法:

Object.defineProperty(Array, "lastIndexOf", { enumerable: false })
不过一般需要兼容实现的浏览器根本不支持defineProperty 方法。并且在多数浏览器上for in都比for loop要慢很多,因此应该尽量避免使用for in。但是如何枚举Object属性的key呢? 使用Object.keys({ a:1 })即可返回关于keys的数组。


详解JavaScript中数组和字符串的lastIndexOf()方法使用
  • javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
  • javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法 | javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法 ...

    详解JavaScript中数组和字符串的lastIndexOf()方法使用
  • ie8 不支持lastIndexOf 的操作
  • ie8 不支持lastIndexOf 的操作 | ie8 不支持lastIndexOf 的操作 ...

    详解JavaScript中数组和字符串的lastIndexOf()方法使用
  • js中substr,substring,indexOf,lastIndexOf的用法小结【javascript】
  • js中substr,substring,indexOf,lastIndexOf的用法小结【javascript】 | js中substr,substring,indexOf,lastIndexOf的用法小结【javascript】 ...