【JS】map遍历数组

微信订阅号:Rabbit_svip



这里的map不是地图的意思,而是“映射”。

map的使用方法和forEach类似。

和forEach不同的是,map有返回值。

在工作中如果需要根据条件重组数组,用map会很方便。


基(yan)础(ge)用法

【JS】map遍历数组_第1张图片
微信订阅号:Rabbit_svip

上面的代码,是把元数组的内容都乘以2,然后返回给一个新数组。

【JS】map遍历数组_第2张图片
微信订阅号:Rabbit_svip

输出效果如上图所示。

首先定义一个numbers数组,里面有1-6,6个元素。

然后用map方法遍历。map里面一定要用一个回调函数,函数的参数(这里我把参数定义名为item)很重要。

第一次循环,item的值是numbers[0],

第二次循环,item的值是numbers[1]

......

第n次循环,item的值是numbers[n]

最后用return ,把每次遍历后并处理过的值,返回给新的数组num。

以上就是map最基础的用法。


详细用法

首先了解一下兼容性问题(可以点开大图查看)

【JS】map遍历数组_第3张图片
微信订阅号:Rabbit_svip

详细写法

array.map(function(currentValue,index,arr),thisValue)
  • currentValue:【必填】数组中正在处理的当前元素。

  • index:【可选】数组中正在处理的当前元素的索引。

  • arr:【可选】方法被调用的数组。也就是当前元素属于的数组对象。

  • thisValue:【可选】执行回调函数时使用的this值。

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

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

如果 thisArg 参数有值,则每次 callback 函数被调用的时候,this 都会指向 thisArg 参数上的这个对象。如果省略了 thisArg ``参数,``或者赋值为 nullundefined,则 this 指向全局对象 。

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

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

你可能感兴趣的:(【JS】map遍历数组)