好好爱自己!

手写js代码(一)javascript数组循环遍历之forEach

注:原文地址http://blog.csdn.net/oscar999/article/details/8671546

我这里是仿照学习!

1、js的数组循环遍历

  ①数组的遍历首先想到的是for()循环语句

1
2
3
4
5
var arr = ['summer','i','love', 'you'];
for(var i=0, length=arr.length; i<length; i++)
{
      alert(arr[i]);
}

    ②其次,比较简单的方法 forEach()

FireFox 和Chrome的Array类型都有forEach()方法,但IE的Array类型没有forEach()方法。

1
2
3
4
5
var arr = ['summer','i','love', 'you'];
/*也可以这样来定义这个数组<br>  var arr = [];<br>  arr.push('summer');<br>  arr.push('i');<br>  arr.push('love');<br>  arr.push('you');<br>*/<br><br>//遍历数组,直接调用Array类型的prototype上面的forEach()方法
arr.forEach(function(e){
    alert(e);
})

 2、让IE兼容数组的forEach()方法

1
2
//IE中
alert(Array.prototype.forEach) // undefined

 上面的代码说明了IE中的Array类型没有forEach()方法

好,既然IE的Array类型没有forEach()方法,那我们现在给它加上forEach()方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//Array.forEach implementation for IE support..
    //https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/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++;
            }
        };
    }

 IE中定义好了之后,Array类型上面就有了forEach()方法,就可以调用了。

1
2
var arr=[1,2,3];
arr.forEach(function(e){alert(e)}); //依次弹出1,2,3

 3、forEach(callback)方法中传入的是callback ,callback为一个回调函数——即每次遍历都会调用的函数

比如,其实forEach()里面传入的回调函数其实是以前我们写在for()循环体{}里面的代码,这其实就是一种抽象,更明朗,我们把以前写在for(){}循环体{}里面的代码(处理过程)放到一个函数中去,然后作为参数传入forEach()方法中。。这也是js中将函数作为参数传递的一个体现。

1
2
3
4
5
6
7
8
9
10
11
12
//取出数组中能被2或3整除的数
var oldArr = [1,2,3,4,5,6,7,8];
var newArr = [];  //var  new =[]; this will be error ,the "new " is the key world in javascript
oldArr.forEach(function(e){
     if(e%2 == 0){
           newArr.push(e);
           return ; //注意,这里不能用break;或者是continue;
     }else if(e%3 == 0){
           newArr.push(e);
           return ;
     }
})

 其实,一看上面的这个取出数组中能被2,3整除的数逻辑显然不够简洁,下面改进

1
2
3
4
5
6
7
8
var oldArr = [1,2,3,4,5,6,7];
var newArr = [];
 
oldArr.forEach(function(e){
     if(e%2 ==0 || e%3==0){
          newArr.push(e);
     }
})

 

posted @   立志做一个好的程序员  阅读(1568)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

不断学习创作,与自己快乐相处

点击右上角即可分享
微信分享提示