美文网首页
js,封装一个方法实现indexOf()的功能

js,封装一个方法实现indexOf()的功能

作者: 留白的未来 | 来源:发表于2017-11-15 14:32 被阅读0次
  • 首先,为什么要自己动手封装?
    还是那个亘古不变的原因——低版本IE的兼容性问题。

  • 原版 indexOf() 的使用方法:
<script type="text/javascript">
    var arr=[1,2,3,4,5,4,3,2,1];
    //在arr中查找3第一次出现时的下标
    var pos1=arr.indexOf(3);
    document.writeln(pos1);
    //从下标2开始,向后查找3第一次出现时的下标
    var pos2=arr.indexOf(3,2);
    document.writeln(pos2);
    //从倒数第八个元素(包含)开始,向后查找3第一次出现时的下标
    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;//第三参为负数时
    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,Firefox,国内的猎豹,百度,腾讯,360,遨游等等,任何一个都比IE强。用IE的人越少,前端需要写的兼容性代码就越少,代码越少,客户端运行消耗就越少,用户使用起来就越流畅,这是互利的事儿,又何乐而不为呢?

相关文章

网友评论

      本文标题:js,封装一个方法实现indexOf()的功能

      本文链接:https://www.haomeiwen.com/subject/hkicvxtx.html