1.  js 数组循环遍历。

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

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

2.  forEach 函数。

Firefox 和Chrome 的Array 类型都有forEach的函数。使用如下:

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <HTML>
  3. <HEAD>
  4. <TITLE> New Document </TITLE>
  5. </HEAD>
  6. <BODY>
  7. <script>
  8. var arryAll = [];
  9. arryAll.push(1);
  10. arryAll.push(2);
  11. arryAll.push(3);
  12. arryAll.push(4);
  13. arryAll.forEach(function(e){
  14. alert(e);
  15. })
  16. </script>
  17. </BODY>
  18. </HTML>

但是以上,代码在IE中却无法正常工作。

因为IE的Array 没有这个方法

  1. alert(Array.prototype.forEach);

执行以上这句得到的是  "undefined", 也就是说在IE 中 Array 没有forEach的方法。

3.  让IE兼容forEach方法

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

  1. //Array.forEach implementation for IE support..
  2. //https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach
  3. if (!Array.prototype.forEach) {
  4. Array.prototype.forEach = function(callback, thisArg) {
  5. var T, k;
  6. if (this == null) {
  7. throw new TypeError(" this is null or not defined");
  8. }
  9. var O = Object(this);
  10. var len = O.length >>> 0; // Hack to convert O.length to a UInt32
  11. if ({}.toString.call(callback) != "[object Function]") {
  12. throw new TypeError(callback + " is not a function");
  13. }
  14. if (thisArg) {
  15. T = thisArg;
  16. }
  17. k = 0;
  18. while (k < len) {
  19. var kValue;
  20. if (k in O) {
  21. kValue = O[k];
  22. callback.call(T, kValue, k, O);
  23. }
  24. k++;
  25. }
  26. };
  27. }

详细介绍可以参照:
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach

 

4. 如何跳出循环?

Js 此种状况的forEach 不能使用continue, break;  可以使用如下两种方式:
1. if 语句控制
2. return . (return true, false)
return --> 类似continue

以下例子是取出数组中2的倍数和3的倍数的数;

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <HTML>
  3. <HEAD>
  4. <TITLE> New Document </TITLE>
  5. </HEAD>
  6. <BODY>
  7. <script>
  8. if (!Array.prototype.forEach) {
  9. Array.prototype.forEach = function(callback, thisArg) {
  10. var T, k;
  11. if (this == null) {
  12. throw new TypeError(" this is null or not defined");
  13. }
  14. var O = Object(this);
  15. var len = O.length >>> 0; // Hack to convert O.length to a UInt32
  16. if ({}.toString.call(callback) != "[object Function]") {
  17. throw new TypeError(callback + " is not a function");
  18. }
  19. if (thisArg) {
  20. T = thisArg;
  21. }
  22. k = 0;
  23. while (k < len) {
  24. var kValue;
  25. if (k in O) {
  26. kValue = O[k];
  27. callback.call(T, kValue, k, O);
  28. }
  29. k++;
  30. }
  31. };
  32. }
  33. var arryAll = [];
  34. arryAll.push(1);
  35. arryAll.push(2);
  36. arryAll.push(3);
  37. arryAll.push(4);
  38. arryAll.push(5);
  39. var arrySpecial = [];
  40. arryAll.forEach(function(e){
  41. if(e%2==0)
  42. {
  43. arrySpecial.push(e);
  44. }else if(e%3==0)
  45. {
  46. arrySpecial.push(e);
  47. }
  48. })
  49. </script>
  50. </BODY>
  51. </HTML>

使用return 达到以上效果

  1. arryAll.forEach(function(e){
  2. if(e%2==0)
  3. {
  4. arrySpecial.push(e);
  5. return;
  6. }
  7. if(e%3==0)
  8. {
  9. arrySpecial.push(e);
  10. return;
  11. }
  12. })

至于如何写类似break 的效果,目前尚未找到比较好的办法。

有搜索一下,有的说return false 可以达成, 试了一下, 效果和return 和return ture 是一样的。

本文摘自http://blog.csdn.net/oscar999/article/details/8671546

JavaScript数组循环遍历之forEach的更多相关文章

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

    注:原文地址http://blog.csdn.net/oscar999/article/details/8671546 我这里是仿照学习! 1.js的数组循环遍历 ①数组的遍历首先想到的是for()循 ...

  2. Javascript 数组循环遍历之forEach

    1.  js 数组循环遍历. 数组循环变量,最先想到的就是 for(var i=0;i<count;i++)这样的方式了. 除此之外,也可以使用较简便的forEach 方式   2.  forE ...

  3. JavaScript数组循环

    JavaScript数组循环 一.前言 利用Javascript map(),reduce()和filter()数组方法可以遍历数组.而不是积累起来for循环和嵌套来处理列表和集合中的数据,利用这些方 ...

  4. PHP数组循环遍历的几种方式

    PHP数组循环遍历 1.for循环 <?php //语法 for (init counter; test counter; increment counter) { code to be exe ...

  5. JavaScript数组方法--flat、forEach、map

    今天到flat了,一个第一次知道该方法还是看到一个面试题,别人给了个答案,用到了flat才知道的方法. 前面也写过关于这道面试题的文章,<一道关于数组的前端面试题>. 这里再来说说吧! f ...

  6. PHP数组循环遍历的四种方式

     1.使用for循环遍历数组     conut($arr);用于统计数组元素的个数.     for循环只能用于遍历,纯索引数组!!!!     如果存在关联数组,count统计时会统计两种数组的总 ...

  7. javaScript数组循环删除

    遍历数组循环的时候,限定条件不要写arr.length,因为数组的长度会随着删除元素的同时减小. 例如,一个原本长度为10的数组,如果采用 for(var i = 0; i< arr.lengt ...

  8. Json格式循环遍历,Json数组循环遍历

    Json格式数据如何遍历,这里我们可以用for..in实现 例如最简单的json格式 , 'handsome' : 'yes' }; for( var key in json1 ){ console. ...

  9. 二维数组遍历的方式(for普通循环遍历、foreach循环遍历、toString方式遍历)

    package com.Summer_0421.cn; import java.lang.reflect.Array; import java.util.Arrays; /** * @author S ...

随机推荐

  1. input获取、失去焦点对输入内容做验证

    获取焦点 # 重新获取焦掉后,会将指定标签中的css样式删除,这里为标记错误的css样式(将文本框标红) $("form input").focus(function () { $ ...

  2. “全栈2019”Java第四十八章:重写方法Override

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  3. mysqli扩展库应用---批量执行sql语句

    1, mysqli批量执行sql语句.基本语法: $sqls=”sql1;sql2;………” mysqli::multi_query($sqls); 同一个$sqls要么是增删改语句集合,要么是查询语 ...

  4. Your branch is ahead of 'origin/master' by 1 commit.

    git reset HEAD^ --soft git reset HEAD^ --hard --soft 表示保留当前commit,重新commit --hard 表示丢弃当前add,重新add.co ...

  5. [转] Linux 中提高 VsFTP 服务器的安全性

    FTP是互联网应用中的一个元老级人物了,其方便企业用户文件的共享.但是,安全问题也一直伴随在FTP左右.如何防止攻击者通过非法手段窃取FTP服务器中的重要信息;如何防止攻击者利用FTP服务器来传播木马 ...

  6. Flink学习笔记:Time的故事

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  7. archlinux安装串口终端ckermit

    1. 将usb转串口连接到PC上.通过dmesg命令可以查看USB转串口是否被PC识别.   显示 ……attachec to ttyUSB0即被识别.   linux系统一般有USB转串口驱动(PL ...

  8. 织梦dedecms5.7手机站页面首页正常其他页面显示pc页面解决方法

       最近遇到的问题,用的是织梦的dedecms从以前的版本升级上来的最新版5.7sp2,客户需要手机版的,要做一个百度的验证.   这个站首页显示算是基本正常,点开里面随便一个页面会跳转到pc页面上 ...

  9. EntityFramework First,FirstOrDefault,Single,SingleOrDefault的区别

    操作符 如果源序列是空的 源序列只包含一个元素 源序列包含多个元素 First 抛异常 返回该元素 返回第一个元素 FirstOrDefault 返回default(TSource) 返回该元素 返回 ...

  10. PIE_SDK.NET功能表