这里的map不是地图的意思,而是“映射”。
map的使用方法和forEach类似。
和forEach不同的是,map有返回值。
在工作中如果需要根据条件重组数组,用map会很方便。
基(yan)础(ge)用法
上面的代码,是把元数组的内容都乘以2,然后返回给一个新数组。
输出效果如上图所示。
首先定义一个numbers数组,里面有1-6,6个元素。
然后用map方法遍历。map里面一定要用一个回调函数,函数的参数(这里我把参数定义名为item)很重要。
第一次循环,item的值是numbers[0],
第二次循环,item的值是numbers[1]
......
第n次循环,item的值是numbers[n]
最后用return ,把每次遍历后并处理过的值,返回给新的数组num。
以上就是map最基础的用法。
详细用法
首先了解一下兼容性问题(可以点开大图查看)
详细写法
array.map(function(currentValue,index,arr),thisValue)
currentValue:【必填】数组中正在处理的当前元素。
index:【可选】数组中正在处理的当前元素的索引。
arr:【可选】方法被调用的数组。也就是当前元素属于的数组对象。
thisValue:【可选】执行回调函数时使用的this值。
map
方法会给原数组中的每个元素都按顺序调用一次 callback
函数。callback
每次执行后的返回值(包括 undefined
)组合起来形成一个新数组。 callback
函数只会在有值的索引上被调用;那些从来没被赋过值或者使用 delete
删除的索引则不会被调用。
callback
函数会被自动传入三个参数:数组元素,元素索引,原数组本身。
如果 thisArg
参数有值,则每次 callback
函数被调用的时候,this
都会指向 thisArg
参数上的这个对象。如果省略了 thisArg ``参数,``或者赋值为 null
或 undefined
,则 this 指向全局对象 。
map
不修改调用它的原数组本身(当然可以在 callback
执行时改变原数组)。
使用 map 方法处理数组时,数组元素的范围是在 callback 方法第一次调用之前就已经确定了。在 map 方法执行的过程中:原数组中新增加的元素将不会被 callback 访问到;若已经存在的元素被改变或删除了,则它们的传递到 callback 的值是 map 方法遍历到它们的那一时刻的值;而被删除的元素将不会被访问到。