您的位置:首页 > Web前端 > JavaScript

js数组的forEach()方法

2016-04-14 10:53 519 查看
1.  js 数组循环遍历。

数组循环变量,最先想到的就是 for(var i=0;i<count;i++)这样的方式了。

除此之外,也可以使用较简便的forEach 方式

2.  forEach 函数。

<script type="text/javascript">

var array=[1,2,3,4,5];
array.forEach(function(e){
alert(e)
});

</script>

forEach函数的参数e是每次循环的数组元素。

3.  让IE兼容forEach方法

Array的forEach()方法兼容chrom,FF,IE9及以上浏览器,IE8不支持

既然IE的Array 没哟forEach方法, 我们就给它手动添加这个原型方法。

if (!Array.prototype.forEach) {  

    Array.prototype.forEach = function(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; // Hack to convert O.length to a UInt32  

        if ({}.toString.call(callback) != "[object Function]") {  

            throw new TypeError(callback + " is not a function");  

        }  

        if (thisArg) {  

            T = thisArg;  

        }  

        k = 0;  

        while (k < len) {  

            var kValue;  

            if (k in O) {  

                kValue = O[k];  

                callback.call(T, kValue, k, O);  

            }  

            k++;  

        }  

    };  

}  

4. 如何跳出循环?

 Js 此种状况的forEach 不能使用continue, break;  可以使用如下两种方式:

1. if 语句控制

2. return . (return true, false)

return --> 类似continue 

<script>  

if (!Array.prototype.forEach) {  

    Array.prototype.forEach = function(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; // Hack to convert O.length to a UInt32  

        if ({}.toString.call(callback) != "[object Function]") {  

            throw new TypeError(callback + " is not a function");  

        }  

        if (thisArg) {  

            T = thisArg;  

        }  

        k = 0;  

        while (k < len) {  

            var kValue;  

            if (k in O) {  

                kValue = O[k];  

                callback.call(T, kValue, k, O);  

            }  

            k++;  

        }  

    };  

}  

  

使用return 达到以上效果

var arryAll=[1,2,3,4,5];  

var arrySpecial = [];  

arryAll.forEach(function(e){  

    if(e%2==0)  

    {  

        arrySpecial.push(e);  

        return;  

    }  

    if(e%3==0)  

    {      

        arrySpecial.push(e);  

        return;  

    }  

}) 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: