- 首先,为什么要自己动手封装?
还是那个亘古不变的原因——低版本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的人越少,前端需要写的兼容性代码就越少,代码越少,客户端运行消耗就越少,用户使用起来就越流畅,这是互利的事儿,又何乐而不为呢?
网友评论