forEach是ECMA5中Array新方法中最基本的一个,就是遍历,循环。例如下面这个例子:

[1, 2 ,3, 4].forEach(alert);

等同于下面这个for循环

1
2
3
4
var array = [1, 2, 3, 4];
for (var k = 0, length = array.length; k < length; k++) {
 alert(array[k]);
}

Array在ES5新增的方法中,参数都是function类型,默认有传参,forEach方法中的function回调支持3个参数,第1个是遍历的数组内容;第2个是对应的数组索引,第3个是数组本身。

因此,我们有:

1
2
3
[].forEach(function(value, index, array) {
  // ...
});

对比jQuery中的$.each方法:

1
2
3
$.each([], function(index, value, array) {
  // ...
});

会发现,第1个和第2个参数正好是相反的,大家要注意了,不要记错了。后面类似的方法,例如$.map也是如此。

1
2
3
4
5
6
7
var data=[1,3,4] ;
var sum=0 ;
data.forEach(function(val,index,arr){
  console.log(arr[index]==val);  // ==> true
  sum+=val           
})
console.log(sum);          // ==> 8

map

这里的map不是“地图”的意思,而是指“映射”。[].map(); 基本用法跟forEach方法类似:

array.map(callback,[ thisObject]);

callback的参数也类似:

1
2
3
[].map(function(value, index, array) {
  // ...
});

map方法的作用不难理解,“映射”嘛,也就是原数组被“映射”成对应新数组。下面这个例子是数值项求平方:

1
2
3
4
5
6
7
var data=[1,3,4]
var Squares=data.map(function(val,index,arr){
  console.log(arr[index]==val);  // ==> true
  return val*val          
})
console.log(Squares);        // ==> [1, 9, 16]

注意:由于forEach、map都是ECMA5新增数组的方法,所以ie9以下的浏览器还不支持(万恶的IE啊),不过呢,可以从Array原型扩展可以实现以上全部功能,例如forEach方法:

1
2
3
4
5
if (typeof Array.prototype.forEach != "function") {
  Array.prototype.forEach = function() {
    /* 实现 */
  };
}

ECMA5forEach相关推荐

最新文章

  1. 构建私有云时,需要考虑的十大要点
  2. 一二三维矩阵的拼接问题
  3. 【Linux】9.ssh登录与scp文件拷贝
  4. mysql课程设计案例_JAVA中MySQL建立连接
  5. 张雪峰计算机科学与技术学什么,张雪峰看好的三大专业是什么 前景好的专业...
  6. 【Boost】boost库asio详解6——boost::asio::error的用法浅析
  7. .NET Core 2.0迁移技巧之web.config配置文件
  8. vue.js框架的生命周期:常用钩子函数
  9. aptana安装svn的方法
  10. AI(5)---AI知多少
  11. 线上python课程一般多少钱-Python在线培训课程费用是多少?值不值得报名?
  12. element引入的组件大小高度不对_ElementUI 在 按需引入时定义 default size?
  13. soem主站移植到rt thread smart操作系统
  14. oracle练习(mldn视频)二
  15. 如何使用Highscore进行XRD物相分析?
  16. C语言十折交叉验证,十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集...
  17. 网络工程师 运维工程师 面试题
  18. 和女性交往的一些经验总结
  19. 【股票】股票交易的手续费介绍以及计算
  20. secureCRT免密安装

热门文章

  1. 区块链游戏叫好不叫座,BridgeChamp能否破局?
  2. iframe分栏拖拽伸缩例子
  3. 使用命令行,批量添加定时关机计划任务
  4. u'string'和unicode('string')有什么区别
  5. onvif server端集成到BOA服务器后不定时出现closewait问题
  6. cdn服务器怎么登网站,服务器使用CDN服务的过程是怎样的?
  7. MS office二级错题记录【9】
  8. php反射执行方法名,PHP使用反射(ReflectionClass)调用其他类的方法
  9. 通过摄像头烟火监测,安全预警
  10. C++ Primer 第五版 课后章节练习答案 第一、二章