遍历map的方法

Posted 简一118

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遍历map的方法相关的知识,希望对你有一定的参考价值。

概述

map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。

语法

array.map(callback[, thisArg])

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

  return 要放入新数组的值

})

参数

function
    原数组中的元素经过该方法后返回一个新的元素。
value
    callback 的第一个参数,数组中当前被传递的元素。
index
    callback 的第二个参数,数组中当前被传递的元素的索引。(常忽略)
array
    callback 的第三个参数,调用 map 方法的数组。
thisArg
    执行 callback 函数时 this 指向的对象。

callback 函数会被自动传入三个参数:数组元素,元素索引,原数组本身。

描述

map 方法会给原数组中的每个元素都按顺序调用一次 callback 函数。callback 每次执行后的返回值组合起来形成一个新数组。callback 函数只会在有值的索引上被调用;那些从来没被赋过值或者使用 delete 删除的索引则不会被调用。

map 不修改调用它的原数组本身(当然可以在 callback 执行时改变原数组)。

使用 map 方法处理数组时,数组元素的范围是在 callback 方法第一次调用之前就已经确定了。在 map 方法执行的过程中:原数组中新增加的元素将不会被 callback 访问到;若已经存在的元素被改变或删除了,则它们的传递到 callback 的值是 map 方法遍历到它们的那一时刻的值;而被删除的元素将不会被访问到。

 

map和array的区别:

array实例:

var list = new Array();
list.push("h");
list.push("h");
list.push("h");

//获取第二个数
list[1];

 

map实例:

var list = new Map();
list.put("1","h");
list.put("2","h");
list.put("3","h");

//获取key值为"2"的value值
list.2;
或
list["2"]

 

写一个map生成新数组的例子吧:

If(!Array.prototype.map)
    var arr=[1,2,3,4,5];
    var newArr=arr.map(function(value,index,array){
        return value*2;
    });
console.log(String(arr));//1,2,3,4,5原数组
console.log(String(newArr));//2,4,6,8,10新数组

 

有个大牛写的map实现原理,还没怎么看明白,先贴出来吧,欢迎指正切磋。

 1   if(!Array.prototype.map){
 2       Array.prototype.map=function(callback){
 3         var result=[];
 4         for(var i=0;i<this.length;i++){
 5           if(i in this){//防止稀疏数组
 6             result[i]=callback(this[i], i, this);
 7           }
 8         }
 9         return result;
10       }
11     }
12 
13     var arr=[1,2,3,4,5];
14 
15     var arr2=arr.map(function(value,index,arr){
16       return value*2;
17     });
18     document.write(String(arr2));

 

以上是关于遍历map的方法的主要内容,如果未能解决你的问题,请参考以下文章

velocity两种map遍历方法

map遍历方法

map的遍历方法 map.entrySet()

遍历Map的方法

java Map 怎么遍历

关于List和Map的遍历方法