JavaScript高阶函数-数组map()方法

539 阅读2分钟

这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战

上一篇文章简单学习了 高阶函数的使用, 有提到数组的一些方法(forEach())也是高阶函数 本篇继续学习 JavaScript 数组的一些相关方法

几篇文章-直达列表 有学习 JavaScript 并不完美但是不影响其运行的一些神奇"bug":

JavaScript 数组相关方法-map

.map()forEach()同样也可以理解为高阶函数, 它们都可接收一个函数作为参数, 来对数组遍历的每个元素进行操作.

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

map 方法的语法、参数

map 看作高阶函数, 传递一个 function 函数作为参数:

let new_array = arr.map(function callback(currentValue[, index[, array]]) {
 // map 方法 对原数组每个元素进行处理后作为元素赋值给 new_array
}[, thisArg])

如上语法: map 方法 会给原数组中的每个元素都按顺序调用一次 callback 函数。

callback(currentValue, index, array) 函数会被自动传入三个参数: 数组元素元素索引原数组本身, 通常我们仅需要第一个参数,而忽略了传入的后面两个参数。

callback 每次执行后的返回值(包括 undefined)组合起来形成一个新数组就是 let 定义的 new_array.

map()方法使用 usage

一个简单的用法: 传递 String 将数值数组转换为字符串数组:

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr.map(String) // ['1', '2', '3', '4', '5', '6', '7', '8', '9']

map() 作为高阶函数,事实上它把运算规则抽象了, 帮我们将复杂代码简化,书写更方便.

通常在请求到后端的数据时都需要我们对其进行处理, 拿到我们想要的字段类型数据,(一个好后端是多么重要!)实际项目开发中的应用

// 接口封装
import axios from 'axios';
export default getStudentList({
  pageCount,
  pageNo,
  ...
}) {
  return axios({
    url: '/api/v/student-list',
    method: 'get',
    params: {
      page_count: pageCount,
      page_no: pageNo,
    },
  })
}
let params = {pageCount: 20, pageNo: 2}
// 请求数据
const res = await getStudentLists(params)
// 处理数据
const studentList = res.map(fn)

下文预告:

下文学习一个高级一点的方法, 也是高阶函数 reduce() 也是处理数据常用的进阶方法.

参考文章