Array.indexOf () 搜尋指定元素

Javascript的Array.indexOf ()方法:

Array.indexOf ()方法是用來搜尋陣列中的元素,

若是匹配成功則傳回該元素所在位置的索引,失敗則傳回-1。

indexOf ()是使用絕對相等來進行搜尋比對,也就是關係運算子中的 ===符號。

雖然 indexOf ()是ECMA-262第五版中定義的標準方法,但並非所有瀏覽器都支援,

我家的IE9也會跳出"物件沒有支援這個屬性或方法 'indexOf' " 的錯誤訊息。

(雖然網路上明明說IE9支援這方法 ==")

但這並非無解,依然可藉由原型來新增並使用此方法,下面會提到這個程式碼。

Array.indexOf ()的語法:

array.indexOf(item,startindex)

item:要在陣列中搜尋的項目。

startindex:起始搜尋索引,由此索引位置開始向後搜尋。

傳回值:匹配成功則傳回該元素所在位置的索引,失敗則傳回-1。

Array.indexOf ()的範例:

<script type="text/javascript">
var myarr = ["Welcome", "To", "Vic's", "Blog"];
document.writeln(myarr.indexOf("To"));
</script>

Array.indexOf ()的範例輸出:

1

Array.indexOf ()方法並非所有瀏覽器都支援,所以若是要使用此方法,

最好加上額外的測試,若是不支援則可使用原型自行建立該方法。

下面這段程式碼來自MDN中的 Array indexOf method

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
        "use strict";
        if (this == null) {
            throw new TypeError();
        }
        var t = Object(this);
        var len = t.length >>> 0;
        if (len === 0) {
            return -1;
        }
        var n = 0;
        if (arguments.length > 1) {
            n = Number(arguments[1]);
            if (n != n) { // shortcut for verifying if it's NaN
                n = 0;
            } else if (n != 0 && n != Infinity && n != -Infinity) {
                n = (n > 0 || -1) * Math.floor(Math.abs(n));
            }
        }
        if (n >= len) {
            return -1;
        }
        var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
        for (; k < len; k++) {
            if (k in t && t[k] === searchElement) {
                return k;
            }
        }
        return -1;
    }
}

關於Array物件的其他屬性與方法,請參考:陣列物件 Array

 
 

  按個讚!~支持本站!~

FB推薦載入中  

你可能會有興趣的文章