✨数组方法之`map()`

35 阅读1分钟

🎈先来看一段 JS 代码:

const n = 2
let arr = new Array(n).fill(0).map(() => new Array(n).fill(0))

确实帅。

解释下, map() 方法的作用是将调用它的数组的每一个元素逐个传递给指定的函数, 然后用这个函数的返回值代替原本的这个元素。

简单的 demo:

let arr = [1, 2, 3]
arr = arr.map((x) => x * 2)
// [2, 4, 6]

// 数组 arr 调用 map 函数,
// arr 中的每一个元素都会逐一地被当为
// map 函数中我们指定函数的参数, 然后用返回值代替原值。

回到下面代码块:

const n = 2
let arr = new Array(n).fill(0).map(() => new Array(n).fill(0))

解释:

  1. new Array(n)创建一个长度为n的数组, fill(0)为其中的每一个元素填充为0。目前已经有了一个长度为n, 每一个元素都为0的数组
  2. 调用map(), 将数组中的每一个元素——0作为入参传入map()中我们指定的函数,这个函数会返回一个长度为n的数组,并用 0 填充。
  3. 执行完map()之后, 我们得到了一个长度为n的数组, 这些数组中的每一个元素也都会是一个数组,且长度为n,因为n2,所以我们得到了一个n * n的矩阵。打印如下:
// [Array(2), Array(2)]