- 首先,為什么要自己動手封裝?
還是那個亙古不變的原因——低版本IE的兼容性問題。
- 原版 indexOf() 的使用方法:
<script type="text/javascript">
var arr=[1,2,3,4,5,4,3,2,1];
//在arr中查找3第一次出現(xiàn)時的下標
var pos1=arr.indexOf(3);
document.writeln(pos1);
//從下標2開始,向后查找3第一次出現(xiàn)時的下標
var pos2=arr.indexOf(3,2);
document.writeln(pos2);
//從倒數(shù)第八個元素(包含)開始,向后查找3第一次出現(xiàn)時的下標
var pos3=arr.indexOf(3,-8);
document.writeln(pos3);
//找不到時返回值-1;
var pos4=arr.indexOf("a");
document.writeln(pos4);
</script>
輸出結果:
2 2 2 -1
很好用,問題是...

indexOf兼容性.png
- 既然這樣,那就自己動手,豐衣足食.
function ArrayIndexOf(arr,value,n){
var i=isNaN(n)?0:n;//有第三參時
i=(i<0)?arr.length+i:i;//第三參為負數(shù)時
for(i;i<arr.length;i++){
if(arr[i]===value){return i;}
}return -1;
}
傳參驗證:
var arr=[1,2,3,4,5,4,3,2,1];
var pos1=ArrayIndexOf(arr,3);
document.writeln(pos1);
var pos2=ArrayIndexOf(arr,3,2);
document.writeln(pos2);
var pos3=ArrayIndexOf(arr,3,-8);
document.writeln(pos3);
var pos4=ArrayIndexOf(arr,"a");
document.writeln(pos4);
輸出結果:
2 2 2 -1
結語:
代碼本身沒什么好說,還是一起號召更多的人盡量不要使用IE瀏覽器吧。好瀏覽器有很多,國外Chrome,F(xiàn)irefox,國內的獵豹,百度,騰訊,360,遨游等等,任何一個都比IE強。用IE的人越少,前端需要寫的兼容性代碼就越少,代碼越少,客戶端運行消耗就越少,用戶使用起來就越流暢,這是互利的事兒,又何樂而不為呢?