JavaScript中Array的indexOf方法支持的浏览器有:IE9+、Firefox 2+、Safari 3+、Opera 9.5+和Chrome

如果想要在不支持的浏览器中使用indexOf方法,可以使用如下的方式进行扩展:

方法一:使用jQuery的$.inArray方法扩展Array方法(使用的jQuery版本是1.11.3版本)

 if(!Array.prototype.indexOf) {
Array.prototype.indexOf = function(value, from) {
return $.inArray(value, this, from);
}
}

BUT,jQuery的$.inArray方法与Array自带的indexOf还是有差异的,使用如下代码进行测试:

 var arr = [1, 2, 3, 'cc', 'dd'];
console.info(arr.indexOf(3));
console.info(arr.indexOf(2,3));
console.info(arr.indexOf(2,-7));
console.info(arr.indexOf('dd',-2.6));
console.info(arr.indexOf(2,-2.999999));
console.info(arr.indexOf('cc',-3));
$.inArray方法输出:2, -1, 1, -1, -1, 3
Array自带方法输出:2, -1, 1, 4, -1, 3
方法二:自己扩展Array的indexOf方法

 if (!Array.prototype.indexOf){
Array.prototype.indexOf = function(value, from){
var len = this.length >>> 0; // 索引必须为整数,忽略小数尾数
var from = parseInt(from) || 0; // 当索引小于0时,加上一次数组长度
from = from < 0 ? from + len : from; for (; from < len; from++){
if (from in this && this[from] === value)
return from;
}
return -1;
};
}

经测试,在IE7+均能获得与Array自带的indexOf相同的功能

注:此扩展未经严格意义上的多浏览器测试,用于生产环境时请慎重!

修复浏览器不支持Array自带的indexOf方法的扩展的更多相关文章

  1. 判断浏览器是否支持某个css3属性的javascript方法

    判断浏览器是否支持css3某个属性的方法: /** * 判断浏览器是否支持某一个CSS3属性 * @param {String} 属性名称 * @return {Boolean} true/false ...

  2. javascript中IE浏览器不支持NEW DATE()带参数的解决方法

    代码如下: var date1=new Date(dateTimes[z][1]); 在火狐下 可以正常取得时间,在IE7下 却是 NaN.纠结老长时间,放弃了new date 然后再老外的论坛中找了 ...

  3. JS判断浏览器是否支持某一个CSS3属性的方法

    var div = document.createElement('div'); console.log(div.style.transition); //如果支持的话, 会输出 "&quo ...

  4. IE 浏览器不支持 ES6 Array.from(new Set( )) SCRIPT438: 对象不支持“from”属性

    [转]解决老浏览器不支持ES6的方法 现象: Array.from(new Set( )) SCRIPT438: 对象不支持“from”属性或方法   解决方法: 安装babel 引入browser. ...

  5. 华为手机浏览器不支持PUT提交方式的解决方案

    最近所在技术团队在开发webapp项目,前端angularjs+后端.Net MVC API,API登录接口定义为PUT提交方式,在做兼容测试时发现UC.safari.微信浏览器下都可以登录,但在华为 ...

  6. 是否以某字符串结尾 是否以某字符串开始 是否是整数 裁减字符串空格 是否是浮点数 是否所有字符为数字类型 是否为空 是否是EMAIL 是否是电话号码 身份证号码验证-支持新的带x身份证 日期验证

    /* 1.是否以某字符串结尾 endsWith(theStr,endStr) @param theStr:要判断的字符串 @param endStr:以此字符串结尾 @return boolean; ...

  7. 中文版Chrome浏览器不支持12px以下字体的解决方案

    中文版Chrome浏览器不支持12px以下字体的解决方案 Chrome 27之前的中文版桌面浏览器会默认设定页面的最小字号是12px,英文版则没有限制,主要是因为chrome认为汉字小于12px就会增 ...

  8. document.documentElement.style判断浏览器是否支持Css3属性

    1.document.documentElement.style 属性定义了当前浏览器支持的所有Css属性 包括带前缀的和不带前缀的 例如:animation,webkitAnimation,msAn ...

  9. 检测浏览器是否支持某个css属性

    以浏览器是否支持translate3d 为例说明,当然现代浏览器已经支持该属性.如果浏览器实现了带有前缀的某个属性,比如说支持-webkit-transform,但是不支持直接写transform,可 ...

随机推荐

  1. CloudStack 4.2 与CloudStack 4.1二级存储API发生变化

    CloudStack 4.1查看二级存储 http://192.168.150.16:8080/client/api?command=listHosts&response=json&s ...

  2. cocos2d-x 如何保持屏幕常亮

    转自:http://blog.csdn.net/wolfking_2009/article/details/8939027 貌似cocos2d-x没有接口直接做这个功能 而各个平台又不一样,所以只能对 ...

  3. bootstrap适配移动端

    上次在pythonanywhere上挂上去的页面,是这个样子的 而在手机上看是这个样子的 总之简直不能看= = 看了一下学校几个微信公众号的页面.都是用的bootstrap,好吧我也去试试看好了. 在 ...

  4. Android中string.xml文件中设置部分字体颜色大小

    1.在string.xml文件中: <string name="tips_all"><Data><![CDATA[清理进程:<font colo ...

  5. printf打印

    printf 打印变量(整型,浮点型,双精度型,字符型,字符串类型) 整型: printf("%d",a); 打印出整形变量a 浮点型:printf("%f", ...

  6. C++ Code_TabControl

    主题 1. 选项卡控件基础 2. 显示图标的选项卡 3. 选项卡控件高级 4. 5.      属性      选项卡控件基础 1.插入1个对话框,新建1个类 CCDialog1,1 个对话框对应一个 ...

  7. 通达OA 公共文件柜二次开发添加管理信息(图文)

    公共文件柜当内容较多时,管理起来非常easy乱,特别是当有多个名字相近的目录时.这里通过简单的开发添加了两个管理信息,能够通过添加备注的方式加以区分. watermark/2/text/aHR0cDo ...

  8. 好看的UI界面

  9. 【JavsScript】一个元素绑定多个事件

    <script> document.getElementById("a").addEventListener("click", function() ...

  10. 销售订单行上行号LINE_SHIPMENT_OPTION_NUMBER

     销售订单行上行号:LINE_SHIPMENT_OPTION_NUMBER 取值: ( 1) Line块的块级触发器POST-QUERY调用: OE_LINE.Post_Query;(来自于库OE ...