当前位置: 移动技术网 > IT编程>开发语言>JavaScript > JS中的forEach、$.each、map方法推荐(附实例)

JS中的forEach、$.each、map方法推荐(附实例)

2019年01月12日  | 移动技术网IT编程  | 我要评论

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

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

等同于下面这个for循环

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个是数组本身。

因此,我们有:

[].foreach(function(value, index, array) {

  // ...

});

对比jquery中的$.each方法:

$.each([], function(index, value, array) {

  // ...

});

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

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的参数也类似:

[].map(function(value, index, array) {

  // ...

});

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

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方法:

if (typeof array.prototype.foreach != "function") {

  array.prototype.foreach = function() {

    /* 实现 */

  };

}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网