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陣列
- golang 陣列去重 移除陣列指定元素Golang陣列
- JavaScript專題之學underscore在陣列中查詢指定元素JavaScript陣列
- JavaScript陣列元素全排列JavaScript陣列
- JavaScript刪除陣列元素JavaScript陣列
- Array · 刪除陣列中指定的元素陣列
- 陣列--移除陣列中指定的元素,不改變原陣列和改變原陣列陣列
- JavaScript刪除array陣列元素JavaScript陣列
- JavaScript 陣列隨機不重複元素JavaScript陣列隨機
- JavaScript 陣列新增或者刪除元素JavaScript陣列
- JavaScript陣列刪除重複元素JavaScript陣列
- JavaScript 刪除陣列重複元素JavaScript陣列
- Java擷取指定區間內的陣列元素並存入新陣列Java陣列
- for迴圈無法刪除陣列所有指定元素陣列
- JavaScript遍歷陣列每一個元素JavaScript陣列
- filter在JavaScript中過濾陣列元素FilterJavaScript陣列
- JavaScript 陣列中元素隨機打亂排序JavaScript陣列隨機排序
- 如何新增javascript陣列n乘以相同的元素JavaScript陣列
- JavaScript獲取陣列最後一個元素JavaScript陣列
- JavaScript獲取元素在陣列中的位置JavaScript陣列
- 【leetcode】27. Remove Element 刪除陣列指定值的元素LeetCodeREM陣列
- 陣列元素逆序陣列
- JavaScript中指定大小分割陣列的一種實現JavaScript陣列
- JavaScript 拼接多個陣列並刪除重複元素JavaScript陣列
- 陣列元素劃分陣列
- JavaScript 陣列JavaScript陣列
- 陣列刪除指定項陣列
- C語言使用指標對陣列指定位置進行插入元素C語言指標陣列
- Javascript - 陣列和陣列的方法JavaScript陣列
- 陣列元素的數量陣列
- java陣列元素的引用Java陣列
- JavaScript—陣列(17)JavaScript陣列
- JavaScript 陣列 slice()JavaScript陣列
- JavaScript 陣列 fill()JavaScript陣列
- JavaScript 陣列 lastIndexOf()JavaScript陣列ASTIndex