支持IE8及以下的,原生JS数组迭代的五种方法
来源:互联网 发布:httpclient抓取数据 编辑:程序博客网 时间:2024/05/17 07:02
IE真是让前端开发者头疼的问题,在解决数组的迭代的过程中,IE8及以下并不能很好的支持。于是去网上搜了搜数组迭代中的every方法,在一个博客大V中搬过来后,发现仍会报错,又比对了下网上的代码,发现我复制的并没有错(QAQ 也不试试就直接用放到博客,这种态度蛮无语的)。于是又看着拿过来的代码,进行了修改和扩展。
① 数组中的every方法
if (!Array.prototype.every) { Array.prototype.every = function (every_fun, thisArg) { var _this = null, iKey = 0, len = this.length; //无符号右移 if (typeof every_fun !== "function") { throw new TypeError("every_fun is not a function"); } if (thisArg) { _this = thisArg; }//绑定执行环境 for (; iKey < len; iKey++) { var key_Value = this[iKey]; if(!every_fun.call(_this, key_Value, iKey, this)){ return false; }; } return true; } } var arr = [2,33,22], every_bool = arr.every(function(item,index,array){ return item >1; }); alert(every_bool); //true②数组的filter方法
if (!Array.prototype.filter) { Array.prototype.filter = function (filter_fun, thisArg) { var _this = null; arr_fil = [], iKey = 0, arr_len = this.length; if (typeof filter_fun != 'function') { throw new Error('filter_fun is not a function'); } if (thisArg) { _this = thisArg; } for (; iKey < arr_len; iKey++) { var key_value = this[iKey]; filter_fun.call(_this, key_value, iKey, this) && arr_fil.push(key_value); } return arr_fil; } } var arr = [1, 23, 8] filter_arr = arr.filter(function (item, index, array) { return item > 2; }); alert(filter_arr)//[23,8]③ 数组的some 方法
if (!Array.prototype.some) { Array.prototype.some = function (some_fun, thisArg) { var _this = null, iKey = 0, arr_len = this.length; if (typeof some_fun != 'function') { throw new typeError('some_fun is not a function') } if (thisArg) { _this = thisArg; } for (; iKey < arr_len; iKey++) { var key_value = this[iKey]; // some_fun.call(_this, arr_value, i, this)&&return true; if (some_fun.call(_this, key_value, iKey, this)) { return true; } } return false; } } var arr = [0, 22, 33]; some_bool = arr.some(function (item, index, array) { return item > 1; }) alert(some_bool) //ture至于其他的两种数组迭代的方法,大家照着写就好了,也蛮简单的。
在这里抛出一个问题,为什么逻辑与&&和逻辑或||操作符后面跟上return 会直接报错,有知道的小伙伴么,求大佬指导。
阅读全文
0 0
- 支持IE8及以下的,原生JS数组迭代的五种方法
- 浅谈原生js的五个数组迭代方法
- 原生js document.getElementsByClassName在IE8及以下浏览器的兼容
- jwPlayer实现支持IE8及以下版本避免出错的方法
- 让ie8以下支持background-size的方法
- js中数组迭代的方法
- js中数组迭代的方法
- 原生js支持的编码转换方法
- html5在ie8及以下的兼容性问题
- IE8及以下JavaScript的一个bug
- rgba ie8及以下的降级方案
- 更新于2017.09 全新支持IE8以下的java版本和js版本
- 解决IE8以下不支持getElementsByClassName的方法
- 原生JS迭代遍历方法使用指南
- 原生js实现数组去重的5种方法
- 原生JS数组去重的几种方法
- 让IE8及以下支持HTML5
- JS 数组迭代方法
- leetcode(560). Subarray Sum Equals K
- HDU 2531 Catch him
- 聊一聊log4j2配置文件log4j2.xml
- Cloudera Manager HBase Thrift 接口 Go/Python客户端
- Scrum项目管理流程总览
- 支持IE8及以下的,原生JS数组迭代的五种方法
- Ajax中通过response在后台传递数据
- 回文字符串
- 万字长文|如何直观解释卷积神经网络的工作原理?
- 嵌入式开发板C语言编写之从触摸屏与网络编程不同线程文件描述符的读取
- 剑指offer:字符串的排列
- 这里是通过QQ邮箱 sina新浪邮箱 163邮箱的简单发送Email
- eclipse项目导入到intellij中
- php面向对象(OOP)编程完全教程