JavaScript陣列檢索指定元素
當前實現此功能非常簡單,ES5已經提供相關方法。
(1)indexOf方法參閱JavaScript indexOf()一章節。
(2).lastindexOf方法參閱JavaScript lastIndexOf()一章節。
但是上面兩個方法都存在的瀏覽器相容問題,也就是IE9以下瀏覽器並不支援。
下面看一個模擬實現的效果,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (elt/*, from*/) { var len = this.length > 0; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) { from += len; } for (; from < len; from++) { if (from in this && this[from] === elt) { return from; } } return -1; } } var arr=["螞蟻部落","青島市南區",3,"css教程","softwhy.com"]; console.log(arr.indexOf("螞蟻部落"));
上面的程式碼實現了我們的要求,下面介紹一下它實現過程。
一.程式碼註釋:
(1).if (!Array.prototype.indexOf) ,判斷當前瀏覽器是否支援indexOf()方法,如果不支援就需要模擬實現。
(2).Array.prototype.indexOf = function (elt/*, from*/) {},為陣列物件原型新增一個indexOf()方法,第一個引數是要檢索的元素,第二個引數可以省略,用來規定從哪個位置開始檢索。
(3).var len = this.length,獲取陣列元素的個數。
(4).var from = Number(arguments[1]) || 0,如果規定的第二個引數,並且能夠轉換成數字,那麼就從指定的位置開始檢索,否則就從第一個元素開始檢索。
(5).from = (from < 0) ? Math.ceil(from) : Math.floor(from),如果from小於0,那麼就進行上舍入操作,如果大於0,那麼就進行下舍入操作。(6).if (from < 0) {
from += len;
},如果form小於0,那麼就通過form+=len計算出正向的索引值。
(7).for (; from < len; from++) {
if (from in this && this[from] === elt) {
return from;
}
},通過for迴圈進行遍歷操作。
陣列的索引可以看做物件的屬性,所以from in this,就是判斷陣列是否有次索引。
this[from] === elt,判斷索引下是否有孩子定的元素。
(8).return -1,如果沒有那麼就返回-1。
二.相關閱讀:
(1).prototype參閱JavaScript prototype原型一章節。
(2).arguments參閱JavaScript arguments一章節。
(3).Math.ceil方法參閱JavaScript Math.ceil()一章節。
(4).Math.floor方法參閱JavaScript Math.floor()一章節。
相關文章
- JavaScript 刪除陣列指定元素JavaScript陣列
- JavaScript 陣列 指定索引位置插入元素JavaScript陣列索引
- JavaScript刪除陣列中指定元素JavaScript陣列
- JavaScript陣列指定位置插入新元素JavaScript陣列
- JavaScript判斷陣列是否包含指定元素JavaScript陣列
- JavaScript 陣列的指定位置插入多個元素JavaScript陣列
- golang 陣列去重 移除陣列指定元素Golang陣列
- javascript如何獲取指定元素在陣列中的數目JavaScript陣列
- JavaScript專題之學underscore在陣列中查詢指定元素JavaScript陣列
- JavaScript陣列元素全排列JavaScript陣列
- JavaScript刪除陣列元素JavaScript陣列
- Array · 刪除陣列中指定的元素陣列
- js刪除陣列指定索引的元素JS陣列索引
- 在JS陣列指定位置插入元素JS陣列
- 陣列--移除陣列中指定的元素,不改變原陣列和改變原陣列陣列
- JavaScript刪除array陣列元素JavaScript陣列
- js如何獲取指定陣列元素在陣列中的索引值JS陣列索引
- javascript模擬實現in_array()判斷指定元素是否在陣列中JavaScript陣列
- javascript陣列如何刪除所有的指定值陣列項JavaScript陣列
- js刪除陣列元素中的指定值JS陣列
- JavaScript 刪除陣列重複元素JavaScript陣列
- JavaScript 陣列隨機不重複元素JavaScript陣列隨機
- JavaScript 陣列新增或者刪除元素JavaScript陣列
- javascript如何為陣列追加新元素JavaScript陣列
- JavaScript清空陣列元素簡單方法JavaScript陣列
- JavaScript 陣列元素連線成字串JavaScript陣列字串
- JavaScript陣列刪除重複元素JavaScript陣列
- Java擷取指定區間內的陣列元素並存入新陣列Java陣列
- for迴圈無法刪除陣列所有指定元素陣列
- jquery判斷指定元素是否存在於某陣列jQuery陣列
- js如何判斷陣列是否含有指定的元素JS陣列
- filter在JavaScript中過濾陣列元素FilterJavaScript陣列
- JavaScript遍歷陣列每一個元素JavaScript陣列
- javascript使用for in語句遍歷陣列元素JavaScript陣列
- javascript刪除陣列元素的程式碼JavaScript陣列
- javascript向陣列中追加多個元素JavaScript陣列
- Javascript刷題 》 查詢陣列元素位置JavaScript陣列
- JavaScript刪除陣列第一個元素JavaScript陣列