初探 Array.prototype.map() 方法

概述

map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。

假设有个数组arrA, arrA调用map() 方法并传入一个callback函数, arrA中每个合法元素都会调用传入的callback函数并把调用的结果 return 出来。当map()函数执行完毕之后,我们就可以得到一个新的数组arrB,其结果是arrA 数组中每一个元素都调用一个提供的函数后返回的结果。

let arrA = [1,2,3]
let arrB = arrA.map(val => {
  return val+10;
})

console.log(arrA, arrB)
// [1, 2, 3]
// [11, 12, 13]

语法

let newArray = arr.map(function callback(currentValue[, index[, array]]) {
    // Return element for newArray
}[, thisArg])

参数

callback

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

  • currentValue: 数组中正在处理的当前元素
  • index: 数组中正在处理的当前元素的索引
  • array:map方法被调用的数组
    function callback(currentValue, index, array){
        return newValue
    }

thisArg

执行 callback 函数时使用的 this 值

返回值

一个新数组,每个元素都是回调函数的结果。

注意点

  • callback 函数只会在有值的索引上被调用;那些从来没被赋过值或者使用 delete 删除的索引则不会被调用。
  • map 不修改调用它的原数组本身(当然可以在 callback 执行时改变原数组)。
  • 如果 thisArg 参数有值,则每次 callback 函数被调用的时候,this 都会指向 thisArg 参数上的这个对象。如果省略了 thisArg 参数,或者赋值为 null 或 undefined,则 this 指向全局对象 。

实例1

使用map 方法将字符串中每个字符存入数组

let map = Array.prototype.map
let arr = map.call("Hello World", function(char) {
    return char
})
console.log(arr) // ["H", "e", "l", "l", "o", " ", "W", "o", "r", "l", "d"]

参考文献

Array.prototype.map()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容