关于js foreach map

 

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() {

    /* 实现 */

  };

}

时间: 2024-12-19 22:32:50

关于js foreach map的相关文章

原生JS forEach()和map()遍历的区别以及兼容写法

一.原生JS forEach()和map()遍历 共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input. 3.匿名函数中的this都是指Window. 4.只能遍历数组. 1.forEach() 没有返回值. arr[].forEach(function(value,index,array){ //do something }) 参数:value数组中的当前项,

原生JS forEach()和map()遍历,jQuery$.each()和$.map()遍历

一.原生JS forEach()和map()遍历 共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input. 3.匿名函数中的this都是指Window. 4.只能遍历数组. 1.forEach() 没有返回值,修改的是原数组. var ary = [12,23,24,42,1]; var res = ary.forEach(function (item,index

js Array Map and Set

Array slice slice()就是对应String的substring()版本,它截取Array的部分元素,然后返回一个新的Array: var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3: ['A', 'B', 'C'] arr.slice(3); // 从索引3开始到结束: ['D', 'E', 'F', 'G'] Note:slice()的起止参数包括开始索

&lt;&lt;&lt; Js对map的操作

var map = {}; // 赋值 var key = "key1"; var value = "value1"; map[key] = value; // 取值 alert(map[key]); if("key1" in map) { //判断是否存在 alert("OK"); } // 删除 delete map["key1"]; // 遍历 for(key in map){ console(key

js自定义Map

function Map() {    this.elements = new Array(); //得到map的大小    this.size = function() {        return this.elements.length;    } //判断是否为空    this.isEmpty = function() {        return (this.elements.length < 1);    }    //清空    this.clear = function()

js foreach函数 注意事项(break、continue)

foreach API说明: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach 说明: forEach 遍历的范围在第一次调用 callback 前就会确定.调用forEach 后添加到数组中的项不会被 callback 访问到.如果已经存在的值被改变,则传递给 callback 的值是 forEach 遍历到他们那一刻的值.已删除的项不会被遍历到.如果已访

for循环,foreach, map,reduce用法对比+for in,for of

for不做赘述,相当简单: foreach方法: forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数. 注意: forEach() 对于空数组是不会执行回调函数的. array.forEach(function(currentValue, index, arr), thisValue) map() : map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值. map() 方法按照原始数组元素顺序依次处理元素. 注意: map() 不会对空数组进行检测.

js forEach参数详解,forEach与for循环区别,forEach中如何删除数组元素

 壹 ? 引 在JS开发工作中,遍历数组的操作可谓十分常见了,那么像for循环,forEach此类方法自然也不会陌生,我个人也觉得forEach不值得写一篇博客记录,直到我遇到了一个有趣的问题,我们来看一段代码: let arr = [1, 2]; arr.forEach((item, index) => { arr.splice(index, 1); console.log(1); //输出几次? }); console.log(arr) //? 请问,这段代码执行完毕后arr输出为多少?循环

js数组中indexOf/filter/forEach/map/reduce详解

今天在网上看到一篇帖子,如题: 出处:前端开发博客 (http://caibaojian.com/5-array-methods.html) 在ES5中一共有9个Array方法,分别是: Array.prototype.indexOf Array.prototype.lastIndexOf Array.prototype.every Array.prototype.some Array.prototype.forEach Array.prototype.map Array.prototype.f