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

    /* 实现 */

  };

}

转载自别人的http://www.jb51.net/article/81955.htm;

时间: 2024-08-09 06:19:40

关于js 中的 foreach map的相关文章

如何在 javascript / js 中 建立一个map

建立map的方式(其实用的是json实现方式) var a = {}; a["key1"] = "value1"; a["key2"] = "value2"; 既然是个map就有检索某个键是否存在的方法,这样写 if ("key1" in a) { // something } else { // something else } 简单的一句话声明map里面的key和value的方式: var a = {'

JS中的forEach、$.each、map方法

forEach是ECMA5中Array新方法中最基本的一个,就是遍历,循环.例如下面这个例子: [1, 2 ,3, 4].forEach(alert); 等同于下面这个for循环 1 var array = [1, 2, 3, 4]; 2 for (var k = 0, length = array.length; k < length; k++) { 3 alert(array[k]); 4 } Array在ES5新增的方法中,参数都是function类型,默认有传参,forEach方法中的f

js中的forEach和map的区别

我们先来看两者之间的相同之处 var arr = ['a','b','c','d']; arr.forEach(function(item,index,arr){ //item表示数组中的每一项,index标识当前项的下标,arr表示当前数组 console.log(item); console.log(index); console.log(arr); console.log(this); },123); //这里的123参数,表示函数中的this指向,可写可不写,如果不写,则this指向wi

JS中的forEach,for in,for of和for的遍历优缺点及区别

forEach:(可以三个参数,第一个是value,第二个是index,第三个是数组体) 缺点:不能同时遍历多个集合,在遍历的时候无法修改和删除集合数据, 方法不能使用break,continue语句跳出循环,或者使用return从函数体返回,对于空数组不会执行回调函数               优点:便利的时候更加简洁,效率和for循环相同,不用关心集合下标的问题,减少了出错的效率               定义:用于调用数组的每个元素,并将元素传递给回调函数              

js中的forEach

chrome和firefox支持数组的forEach,但不支持对象的forEach,IE啥都不支持 jquery中的$.each(ArrayOrObject,function(){})既可以遍历数组又可以遍历对象 $(selector).each(function(){}) 如果each的回调函数function()没有参数,还可以使用$(this)来访问,这样也可以对$(this)的键值对进行更改 each的回调函数还可以有参数(key,value),来访问键值对

js中数组的map()方法

map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值 map()方法按照原是数组顺序以此处理元素 注意:map()不会对空数组进行检测 :不会改变原始的数组 实例: var numbers = [65, 44, 12, 4]; function multiplyArrayElement(num) { return num * 10; } function myFunction() { document.getElementById("demo").innerHTM

js中使用forEach遍历List

<script>            var nameList=new Array();        var areaIdList=new Array();                <c:forEach items="${area}" var="area" varStatus="status">        nameList[${status.index}]="${area.areaName}&quo

JS 中的foreach和For in比较

使用方式举例如下: <script type="text/javascript"> var jsonranklist=[{"name":"ts","code":123456,"topscore":2000},{"xlid":"tb","code":123456,"topscore":1500}]; console.l

js中string转map的方法

例如: var r = "{'msg':'你好'}" ; var map = eval("("+r+")"); //r为String类型的数据 var xx = map.msg; //此时 xx 的值为 你好 原文地址:https://www.cnblogs.com/longronglang/p/12303013.html