场景:
你有一个数组,你想对数组中的每个元素做点事情
例如:
你有一个数组:[1,2,3,4,5,6,7],你想输出这个数组的每个元素的立方
一种方法是遍历这个数组,做立方计算后赋给新的数组,像下面这样:
1 'use strict'; 2 function mySquare(arg){ 3 // return arg * arg * arg; 4 return Math.pow(arg,3); 5 } 6 var myArr = [1,2,3,4,5,6,7]; 7 var myNewArr = []; 8 for(var i in myArr){ 9 myNewArr[i] = mySquare(myArr[i]); 10 } 11 console.log(myNewArr);
但如果用map方法,将更加简便,像下面这样:
1 'use strict'; 2 function mySquare(arg){ 3 // return arg * arg * arg; 4 return Math.pow(arg,3); 5 } 6 var myArr = [1,2,3,4,5,6,7]; 7 var myNewArr = myArr.map(mySquare); 8 console.log(myNewArr);
是不是很方便!
map方法的定义如下:
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值
map() 方法按照原始数组元素顺序依次处理元素
map() 不会对空数组进行检测
map() 不会改变原始数组
map语法:
array.map(function(currentValue,index,arr), thisValue)
参数说明:
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
函数参数:
currentValue 必须。当前元素的值
index 可选。当期元素的索引值
arr 可选。当期元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
map方法还可以做很多事情:
比如,将数组元素转换成字符串:
1 'use strict'; 2 var myArr = [1,2,3,4,5,6,7]; 3 var myNewArr = myArr.map(String); 4 console.log(myNewArr);
发挥你的想象,一切皆有可能!