Array.prototype.map( )
map( ) 方法创建一个新数组,其结果是该数组中的每个元素调用一次提供的函数后的返回值
语法:
var new_array = arr.map(function callback(currentValue[, index[, array]]) { // Return element for new_array }[, thisArg])
callback 生成新数组的函数,使用三个参数:
currentValue
callback 数组中当前正在处理的当前元素
index 可选
callback 数组中正在处理的当前元素的索引
array 可选
map方法调用的数组
map方法会给原数组中的每一个元素调用一次cakkback函数,callback 每次执行后的返回值(包括undefined)组合起来形成一个新数组。
因为map生成一个新的数组,当你不打算使用返回的新数组却使用map是违背设计初衷的,请用forEach或者for-of替代。
以下情况:你不该使用map
1、你不打算使用返回的新数组
2、或者从回调函数中不返回值
求数组中每个元素的平方根
var numbers = [1, 4, 9]; var roots = numbers.map(Math.sqrt); // roots的值为[1, 2, 3], numbers的值仍为[1, 4, 9]
可能返回含undefined的数组
var numbers = [1, 2, 3, 4]; var filteredNumbers = numbers.map(function(num, index) { if(index < 3) { return num; } }); //index goes from 0,so the filterNumbers are 1,2,3 and undefined. // filteredNumbers is [1, 2, 3, undefined] // numbers is still [1, 2, 3, 4]