forEach 以及 IE兼容

语法

array.forEach(function(currentValue, index, arr), thisValue)

参数

参数 描述
function(currentValue, index, arr) 必需。 数组中每个元素需要调用的函数。
函数参数:

参数 描述
currentValue 必需。当前元素
index 可选。当前元素的索引值。
arr 可选。当前元素所属的数组对象。
thisValue 可选。传递给函数的值一般用 "this" 值。
如果这个参数为空, "undefined" 会传递给 "this" 值

实例

计算数组所有元素相加的总和:

<buttononclick="numbers.forEach(myFunction)">点我</button><p>数组元素总和:<spanid="demo"></span></p><script>
var sum = 0;
var numbers = [65, 44, 12, 4];

function myFunction(item) {
sum += item;
demo.innerHTML = sum;
}
</script>

来源: http://www.runoob.com/jsref/jsref-foreach.html

实例

将数组中的所有值乘以特定数字:

<p>乘以: <inputtype="number"id="multiplyWith"value="10"></p><buttononclick="numbers.forEach(myFunction)">点我</button><p>计算后的值: <spanid="demo"></span></p><script>
var numbers = [65, 44, 12, 4];

function myFunction(item,index,arr) {
arr[index] = item * document.getElementById("multiplyWith").value;
demo.innerHTML = numbers;
}
</script>

来源: http://www.runoob.com/jsref/jsref-foreach.html

值得注意的是  数组执行forEach之后,会改变了原数组的值,并且第三个参数即代表数组

forEach 只有在IE9以上才可以使用,为了更好的使用这个方法,有专门做了一个IE8的兼容

if ( !Array.prototype.forEach ) {    Array.prototype.forEach = function forEach( callback, thisArg ) {        var T, k;        if ( this == null ) {            throw new TypeError( "this is null or not defined" );        }        var O = Object(this);        var len = O.length >>> 0;        if ( typeof callback !== "function" ) {            throw new TypeError( callback + " is not a function" );        }        if ( arguments.length > 1 ) {            T = thisArg;        }        k = 0;        while( k < len ) {

var kValue;            if ( k in O ) {                kValue = O[ k ];                callback.call( T, kValue, k, O );            }            k++;        }    };}

来源: http://www.cnblogs.com/guxiaosao/p/5179842.html

时间: 2024-08-07 08:22:44

forEach 以及 IE兼容的相关文章

JavaScript中浏览器兼容问题

浏览器兼容性问题是在实际开发中容易忽略而又最重要的一部分.我们在讲老版本浏览器兼容问题之前,首先要了解什么是能力检测,它是来检测浏览器有没有这种能力,即判断当前浏览器是否支持要调用的属性或者方法.下面做了一些简短的介绍. 1.innerText 和 innerContent 1)innerText 和 innerContent 的作用相同 2)innerText IE8之前的浏览器支持 3)innerContent 老版本的Firefox支持 4)新版本的浏览器两种方式都支持 // 老版本浏览器

javascript 兼容总结

1 大多数兼容性问题可通过 if(){-}else{-} 来解决 2 this 的指向问题 3 1)构造函数中的 this 指 "."前的对象 4 2)new 出来的对象,this 指当前对象 5 3)回调函数中的 this 指 window 6 4)给当前元素添加事件 this 指当前元素 7 8 JS中出现的兼容性问题的总结 9 1.关于获取行外样式 currentStyle 和 getComputedStyle 出现的兼容性问题 10   我们都知道js通过style不可以获取行

数组去重的几种算法

第一种算法: 算法思想: 1.构建一个新数组,新数组包含一个元素,元素值为目标数组的一个值: 2.从目标数组的第二个元素开始遍历,依次取出每一个元素: 3.将取出的元素与新数组里面的所有元素进行比较,如果没有出现,则将该元素添加到新数组中,如果出现,则处理下一个目标数组的元素: 4.目标数组的所有元素均已处理完. 1 Array.prototype.deleteRepeat1=function (){ 2 //构建一个新数组,存放结果,首先给newArray一个初值,初值为调用该函数的数组的第一

map() 和 forEach() 区别 兼容写法

兼容写法: 不管是forEach还是map在IE6-8下都不兼容(不兼容的情况下在Array.prototype上没有这两个方法),那么需要我们自己封装一个都兼容的方法,代码如下: /** * forEach遍历数组 * @param callback [function] 回调函数: * @param context [object] 上下文: */ Array.prototype.myForEach = function myForEach(callback,context){ contex

forEach方法(兼容所有浏览器)

//->自己在内置类的原型上扩展一个myForEach来处理forEach不兼容的问题//callBack:回调函数,遍历数组中的一项,就要执行一次callBack//context:改变callBack方法中的this指向 Array.prototype.myForEach = function myForEach(callBack, context) { typeof context === "undefined" ? context = window : null; if

JavaScript中的数组遍历forEach()与map()方法以及兼容写法

原理: 高级浏览器支持forEach方法 语法:forEach和map都支持2个参数:一个是回调函数(item,index,list)和上下文: forEach:用来遍历数组中的每一项:这个方法执行是没有返回值的,对原来数组也没有影响: 数组中有几项,那么传递进去的匿名回调函数就需要执行几次: 每一次执行匿名函数的时候,还给其传递了三个参数值:数组中的当前项item,当前项的索引index,原始数组input: 理论上这个方法是没有返回值的,仅仅是遍历数组中的每一项,不对原来数组进行修改:但是我

原生JS forEach()和map()遍历的区别以及兼容写法

一.原生JS forEach()和map()遍历 共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input. 3.匿名函数中的this都是指Window. 4.只能遍历数组. 1.forEach() 没有返回值. arr[].forEach(function(value,index,array){ //do something }) 参数:value数组中的当前项,

让forEach兼容IE8

今天在做项目中遇到一个问题,就是forEach 不兼容IE8:后经查阅资料完美解决问题. 资料:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach?v=example 1 //官网查询的兼容代码段 2 // Production steps of ECMA-262, Edition 5, 15.4.4.18 3 // Reference: http://es5

forEach兼容ie8

if ( !Array.prototype.forEach ) {     Array.prototype.forEach = function forEach( callback, thisArg ) {         var T, k;         if ( this == null ) {             throw new TypeError( "this is null or not defined" );         }         var O = O