Array.indexOf () 搜尋指定元素
- 詳細內容
- 分類:Javascript
- 發佈:2013-02-20, 週三 22:11
- 點擊數:3460
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.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推薦載入中
你可能會有興趣的文章
- Array.concat() 合併陣列
- 一個for迴圈操作陣列的效率問題
- 陣列物件 Array
- String.valueOf()傳回字串物件的原始值
- String.toUpperCase()將字串字母變大寫
- String.toLowerCase()將字串字母變小寫