1. 方法概述
map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。
2. 例子
2.1 在字符串中使用map
在一个 String 上使用 map 方法获取字符串中每个字符所对应的 ASCII 码组成的数组:
var map = Array.prototype.map var a = map.call("Hello World", function(x) { return x.charCodeAt(0); })
// 下面的语句返回什么呢: ["1", "2", "3"].map(parseInt); // 你可能觉的会是[1, 2, 3] // 但实际的结果是 [1, NaN, NaN] // 通常使用parseInt时,只需要传递一个参数.但实际上,parseInt可以有两个参数.第二个参数是进制数.可以通过语句"alert(parseInt.length)===2"来验证. // map方法在调用callback函数时,会给它传递三个参数:当前正在遍历的元素, 元素索引, 原数组本身. // 第三个参数parseInt会忽视, 但第二个参数不会,也就是说,parseInt把传过来的索引值当成进制数来使用.从而返回了NaN. //应该使用如下的用户函数returnInt function returnInt(element){ return parseInt(element,10); } ["1", "2", "3"].map(returnInt);// 返回[1,2,3]
3.map()方法的实现原理
1 Array.prototype.myMap = function(callback){ 2 var arr = []; 3 for(var i = 0; i < this.length; i++){ 4 var value = callback(this[i],i,this); 5 if(value == null){ 6 continue; 7 } 8 arr.push(value); 9 } 10 return arr; 11 } 12 13 var items = [1,2,3,4]; 14 15 var arr = items.myMap(function(item,i){ 16 return item*10; 17 });