JavaScript数组操作——遍历方法的兼容
1.1概述
ECMA Script5中数组方法如indexOf()、forEach()、map()、filter()、some()不支持IE6~8。
1.2兼容写法
以下兼容性写法均可兼容至IE6。
1.2.1indexOf()方法兼容
if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(ele) { var len = this.length; //获取数组长度 var fromIndex = Number(arguments[1]) || 0; //检查值为数字的第二个参数是否存在,默认值为0 //当第二个参数小于0时,为倒序查找,相当于查找索引值为该索引加上数组长度后的值 if(fromIndex < 0) { fromIndex += len; } //从fromIndex起循环数组 while(fromIndex < len) { //检查fromIndex是否存在且对应的数组元素是否等于ele if(fromIndex in this && this[fromIndex] === ele) { return fromIndex; } fromIndex++; } //当数组长度为0时返回不存在的信号:-1 if (len === 0) { return -1;} } }
1.2.2 forEach()方法兼容
if ( !Array.prototype.forEach) { Array.prototype.forEach = function forEach(callback) { var len = this.length; if(typeof callback != "function") { throw new TypeError(); } //thisArg为callback 函数的执行上下文环境 var thisArg = arguments[1]; for(var i = 0; i < len; i++) { if(i in this) { //callback函数接收三个参数:当前项的值、当前项的索引和数组本身 callback.call(thisArg, this[i], i, this); } } } }
1.2.3 map()方法兼容
if (!Array.prototype.map) { Array.prototype.map = function(callback) { var len = this.length; if(typeof callback != "function") { throw new TypeError(); } //创建跟原数组相同长度的新数组,用于承载经回调函数修改后的数组元素 var newArr = new Array(len); var thisArg = arguments[1]; for(var i = 0; i < len; i++) { if(i in this) { newArr[i] = callback.call(thisArg, this[i], i, this); } } return newArr; } }
1.2.4 filter()方法兼容
if (!Array.prototype.filter) { Array.prototype.filter = function(callback) { var len = this.length; if(typeof callback != "function") { throw new TypeError(); } //创建新数组,用于承载经回调函数修改后的数组元素 var newArr = new Array(); var thisArg = arguments[1]; for(var i = 0; i < len; i++) { if(i in this) { if(callback.call(thisArg, this[i], i, this)) { newArr.push(val); } } } return newArr; } }
1.2.5 some()方法兼容
if (!Array.prototype.some) { Array.prototype.some = function(callback) { var len = this.length; if(typeof callback != "function") { throw new TypeError(); } var thisArg = arguments[1]; for(var i = 0; i < len; i++) { if(i in this && callback.call(thisArg, this[i], i, this)) { return true; } } return false; } }
1.2.6 every()方法兼容
if (!Array.prototype.every) { Array.prototype.every = function(callback) { var len = this.length; if(typeof callback != "function") { throw new TypeError(); } var thisArg = arguments[1]; for(var i = 0; i < len; i++) { if(i in this && !callback.call(thisArg, this[i], i, this)) { return false; } } return true; } }
发表评论
-
JavaScript中对象的总结
2018-03-10 10:43 703JavaScript中对象的总结 1. ... -
JS数字指定长度不足前补零的实现
2018-03-10 10:25 12582JS数字指定长度不足前补零的实现 问题描述: ... -
银行卡卡号校验——Luhn算法
2017-11-06 09:34 2686银行卡卡号校验——Luhn算法 1.1 Luhn简介 ... -
Javascript数组操作
2017-11-04 14:17 896Javascript数组操作 1.1颠倒数组元素顺序 1.1. ... -
获取select标签选中值
2017-11-03 08:54 1490获取select标签选中值 1.1实例讲解 <!DOCT ... -
表单提交前的验证方式——form的onsubmit事件
2017-10-30 14:21 8335表单提交前的验证方式——form的onsubmit事件 1.1 ... -
document.forms用法详解
2017-10-30 11:20 2864document.forms用法详解 1.1概述 ... -
js模拟表单post方式提交
2017-10-30 09:44 2151js模拟表单post方式提交 1.1概述 用j ... -
Form表单提交,页面不跳转的方法
2017-10-18 15:09 5672Form表单提交,页面不跳转的方法 1.1 解决方案一 ... -
javascript定时功能详解
2017-09-24 15:05 760javascript定时功能详解 1. ... -
js程序中$符号详解
2016-09-14 11:13 725js程序中$符号详解 $符号在php中是表示变 ... -
JS比较运算符之等于与不等于详解
2016-07-05 17:56 1928JS比较运算符之等于与不等于详解 1.1等于(==)与不等于( ... -
JS in的用法
2016-04-24 22:20 2391JS in的用法 1.1简介 JavaScript中的in 操 ... -
JS 访问对象中数据易错点总结
2016-04-16 16:07 495JS 访问对象中数据易错点总结 1.1访问Hash中的键值 例 ... -
JS number保留整数及n位小数的方法
2016-04-16 15:27 2811JS number保留整数及n位小 ... -
if语句中使用多个条件的优化
2016-04-16 11:31 7066if语句中使用多个条件 ...
相关推荐
5. **数组和遍历**:用数组存储广告图片的URL,通过遍历数组,可以轻松管理多张图片的切换。 6. **AJAX预加载**:为了避免用户等待,JavaScript可以通过AJAX异步加载下一张图片,提高用户体验。 7. **jQuery库**:...
这涉及到数组操作,比如遍历棋盘上的每个元素,以及条件判断语句来检查消除条件。 项目的实现可能还涉及了一些数据结构和算法,比如链表或队列用于存储待消除的棋子对,以及深度优先搜索(DFS)或广度优先搜索(BFS...
《JavaScript经典特效——会动的表格》 在Web开发领域,JavaScript是一种不可或缺的脚本语言,它赋予网页动态交互的能力,让网页从静态文本转变为生动的用户体验。在本专题中,我们将深入探讨如何利用JavaScript...
6.1.1.2 JavaScript函数的奥妙——魔法代码 6.1.2 函数的调用 6.2 函数的参数 6.2.1 形参与实参 6.2.2 Arguments对象 6.2.2.1 一个使用Arguments对象检测形参的例子 6.2.2.2 一个使用...
- **标准的DOM方法**:介绍了一些常用的DOM操作方法,如`getElementById`、`getElementsByClassName`等。 - **等待HTML DOM的加载** - **等待整个页面的加载**:通过监听`load`事件来确认所有资源都已加载完成。 ...
由于不同的浏览器对某些 DOM 操作的支持不同,通常会使用一些通用的方法来提高代码的兼容性,比如使用 `window.onload` 代替 `document.ready`。 ##### 五、制作全选效果 使用 JavaScript 来遍历一组复选框或单选...
《Underscore源码解析——深入理解JavaScript工具库》 Underscore.js 是一个轻量级的JavaScript实用库,它提供了许多实用的功能,包括数组、对象处理、函数编程等,以增强JavaScript开发效率。该库的版本为1.3.3,...
2. **对象与数组**:讲解对象的创建和操作,包括属性和方法,以及数组的使用,如遍历、查找和修改元素。 3. **函数与作用域**:深入探讨函数的定义、调用,参数传递,以及函数作为值和作为对象的角色。同时,解释...
"前端开源库-flatmap"就是这样一个工具,旨在填补前端JavaScript中的一个功能空缺——扁平化处理(Flattening)数组。本文将深入探讨flatmap函数以及其在前端开发中的应用。 在JavaScript中,数组的扁平化通常用于...
标题中的"Sugar在原生对象上增加一些工具方法"指的是JavaScript的一个库——Sugar.js,它扩展了JavaScript原生对象的功能,提供了丰富的实用方法,使得开发者能更高效、更优雅地编写代码。Sugar库的设计目标是增强...
根据提供的标题、描述、标签及部分内容,我们可以总结出本文主要关注的是JavaScript中实现的一个经典实例——霓虹灯特效。为了更好地理解这一知识点,我们将从以下几个方面进行深入探讨: ### 一、JavaScript简介 ...
1. jQuery库基础:jQuery 是一个流行的JavaScript库,简化了DOM操作、事件处理、动画和Ajax交互。它是这个图片浏览插件的基石,利用其强大的功能来实现动态效果和用户交互。 2. 图片轮播原理:该插件基于图片轮播的...
JavaScript(简称JS)是一种轻量级的解释型编程语言,主要应用于网页和网络应用开发,尤其在客户端渲染和...实际应用中,开发者还应关注性能优化、Unicode处理、字符串的比较操作以及在不同浏览器环境下的兼容性问题。
在JavaScript中,虽然原生的Array.isArray()方法可以用来检测数组,但jQuery为了兼容性考虑,自己实现了这个方法。如果要兼容旧版本的IE浏览器,则无法使用Array.isArray()方法,因此jQuery的isArray方法是一种很好...
$.each()用于遍历数组或对象,是实现迭代操作的重要工具。$.get()和$.post()则提供了方便的Ajax请求接口,使得与服务器的异步通信变得简单易行。 事件处理在jQuery中也得到了极大的优化。$(element).click(function...
这个开源库——`json-path`,是专为Node.js和现代浏览器设计的,使得在JavaScript环境中操作JSON数据变得简单易行。 在前端开发中,数据交互通常涉及JSON格式,而`json-path`库提供了强大且灵活的查询功能。通过...
如果是,它将遍历一个包含所有HTML5新标签的数组,使用`document.createElement`方法为每个新标签创建DOM元素,从而让这些标签在旧版IE中可用。 **总结** 这两种方法都能有效地解决HTML5新标签在IE9以下版本的兼容...
这段代码首先检查是否为IE浏览器,然后遍历HTML5新标签的数组,逐个创建DOM元素,从而使得IE8及以下版本能够识别这些标签。 **总结** 解决HTML5新标签在旧版IE中的兼容问题,可以采用html5shiv库或者利用jQuery...