js,封裝一個方法實現(xiàn)indexOf()的功能

  • 首先,為什么要自己動手封裝?
    還是那個亙古不變的原因——低版本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的人越少,前端需要寫的兼容性代碼就越少,代碼越少,客戶端運行消耗就越少,用戶使用起來就越流暢,這是互利的事兒,又何樂而不為呢?

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容