麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

詳解JavaScript中數組和字符串的lastIndexOf()方法使用

2019-11-20 10:23:46
字體:
來源:轉載
供稿:網友

Array.prototype.lastIndexOf 和 String.prototype.lastIndexOf 是非常的實用的方法,不過很多人不知道它其實可以傳遞兩個參數,第二個參數決定了搜索的起始位置:

語法

str.lastIndexOf(searchValue[, fromIndex])

lastIndexOf() 方法返回指定值在調用該方法的字符串中最后出現的位置,如果沒找到則返回 -1。從該字符串的后面向前查找,從 fromIndex 處開始。

參數

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") + "<br/>");// 輸出: 4// 從正數第二個位置,搜索倒數第一個CD的位置document.write(ar.lastIndexOf("cd", 2) + "<br/>");// 輸出: 1// 從倒數第三個搜索最后一個ab的位置document.write(ar.lastIndexOf("ab", -3) + "<br/>");// 輸出: 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的數組。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品久久999 | 精品三级内地国产在线观看 | 97超视频在线观看 | 国产精品久久久久久久久久久久久久久久 | 一级黄色大片在线观看 | 国产亚洲区 | 国产精品视频一区二区三区综合 | 91 在线 | 伦一区二区三区中文字幕v亚洲 | 狠狠色成色综合网 | 国产免费美女 | 欧美日韩成人一区二区 | 国产精品自拍啪啪 | 国产精品成人久久 | 亚洲精品xxx | 国产一级一区二区三区 | 欧美a久久 | 成人一区二区三区四区 | 欧美日本亚洲视频 | 久久精品视频1 | 成人免费在线视频播放 | 国产羞羞视频免费在线观看 | 中文字幕 亚洲一区 | 日本不卡一区二区在线观看 | 成年人黄视频 | 姑娘第四集免费看视频 | 婷婷中文字幕一区二区三区 | a视频网站| 亚洲第一页夜 | 日本在线播放一区二区三区 | 成人毛片在线免费看 | 媚药按摩痉挛w中文字幕 | 毛片免费观看视频 | 爱高潮www亚洲精品 国产精品一区自拍 | 国产精品久久久久久影院8一贰佰 | 天天都色视频 | 久久精品久久精品国产大片 | 国产免费福利视频 | 97超级碰碰人国产在线观看 | 国产精品av久久久久久久久久 | 日韩剧情片 |