博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于js foreach map
阅读量:4356 次
发布时间:2019-06-07

本文共 1336 字,大约阅读时间需要 4 分钟。

 

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
() {
    
/* 实现 */
  
};
}

 

转载于:https://www.cnblogs.com/pixabayhao/p/7212668.html

你可能感兴趣的文章
年关将至业内警示P2P跑路风险
查看>>
asp.net core刷新css缓存
查看>>
十大数据挖掘算法及各自优势
查看>>
python环境准备
查看>>
Invert (mirror) a bitmap
查看>>
LPC43xx SGPIO I2C Implementation
查看>>
Beta 冲刺(1/7)
查看>>
修改 Vultr 登录密码
查看>>
CSS学习
查看>>
Centos 安装lnmp完整版
查看>>
PHP把图片存入数据库(非路径)【待测试】
查看>>
ZH奶酪:PHP判断图片格式的7种方法
查看>>
java中给main传参的方式
查看>>
Git常用
查看>>
springboot实现邮件发送
查看>>
Python3.x:抢票
查看>>
前端三大主流框架的对比React、Vue、Angular 所谓是是三分天下
查看>>
12数据结构与算法分析之---顺序栈
查看>>
33数据结构与算法分析之---图的遍历
查看>>
spring log4j日志处理
查看>>