JavaScript 数组方法 .map() 的 5 个使用场景

简介: .map() 函数是 JavaScript 数组结构中很实用的一个方法之一,其通过调用回调函数创建一个新数组。该函数访问调用数组中的每个元素。可以将 map() 方法视为经过一个循环并在回调函数中编写语句(格式化、数据处理)以构造一个新数组。

.map() 函数是 JavaScript 数组结构中很实用的一个方法之一,其通过调用回调函数创建一个新数组。该函数访问调用数组中的每个元素。可以将 map() 方法视为经过一个循环并在回调函数中编写语句(格式化、数据处理)以构造一个新数组。

语法

const newArray = array.map(function callback(currentValue[, index[, array]]) {
 // 为新数组返回新的元素
}[, thisArg])

.map() 函数用于遍历数组元素。它接受一个回调函数作为参数,根据回调函数返回一个新数组和新元素。

.map() 方法是一个用来创建新数组、修改其内容并保持原始数组不变的通用方法。当出现需要修改现有数组的内容并将结果存储为新变量的时候就可以用。

参数

  • callback(必须):生成新数组元素的函数,接收三个参数:
  • currentValuecallback 数组中正在处理的当前元素。
  • index:可选,callback 数组中正在处理的当前元素的索引。
  • array:可选,map 方法调用的数组。
  • thisArg:可选,执行 callback 函数时值被用作 this

返回值

一个由原数组每个元素执行回调函数的结果组成的新数组。

当需要更新数组中的所有项并将其存储到一个新数组中时,.map() 方法就可以派上用场了。

1. 元素翻倍

可以使用 .map() 方法从另一个数组创建一个新数组。例如,可以将一个整数数组的每个元素翻倍构造一个新数组。

const arrayNumbers = [1, 2, 3, 4, 5];
const doubles = (array) => array.map((num) => num * 2);
console.log(arrayNumbers); // [ 1, 2, 3, 4, 5 ]
console.log(doubles(arrayNumbers)); // [ 2, 4, 6, 8, 10 ]

2. 元素格式化

可以使用 .map() 方法格式化对象数组。例如,有一个对象数组,对象属性包含 usernameaddressage 等,现在需要一个由 username 组成的数组,这样的场景就非常适合 .map() 方法。

const arrayUsers = [
    {
        id: 1,
        username: "Magic",
        address: "Johnson",
    },
    {
        id: 2,
        username: "Kobe",
        address: "Bryant",
    },
    {
        id: 3,
        username: "Lebron",
        address: "James",
    },
    {
        id: 4,
        username: "Kareem",
        address: "Abdul-Jabbar",
    },
    {
        id: 5,
        username: "Shaquille",
        address: "O’Neal",
    },
];
const newUsers = arrayUsers.map((item) => item.username);
console.log(arrayUsers);
// [
//     { id: 1, username: 'Magic', address: 'Johnson' },
//     { id: 2, username: 'Kobe', address: 'Bryant' },
//     { id: 3, username: 'Lebron', address: 'James' },
//     { id: 4, username: 'Kareem', address: 'Abdul-Jabbar' },
//     { id: 5, username: 'Shaquille', address: 'O’Neal' }
//   ]
console.log(newUsers); // [ 'Magic', 'Kobe', 'Lebron', 'Kareem', 'Shaquille' ]

从上面的接口可以看到,.map() 不会对原数组进行改造。

3. 回调数组中的某些元素

可以将指定的元素翻倍,而不是将数组中的每个元素都翻倍。例如,只对数组中的奇数元素进行翻倍。

const arrayNumbers = [1, 2, 3, 4];
const doubles = (nums) => nums.map((num) => (num % 2 === 1 ? num * 2 : num));
console.log(arrayNumbers); // [ 1, 2, 3, 4 ]
console.log(doubles(arrayNumbers)); // [ 2, 2, 6, 4 ]

4. 将字符串转换为数组

可以使用 .map() 方法将字符串转换为数组。

const language = "China";
const map = Array.prototype.map;
const letters = map.call(language, (eachLetter) => `${eachLetter}`);
console.log(letters); // [ 'C', 'h', 'i', 'n', 'a' ]

5. 在 React.js 中渲染列表

还可以在 React 中使用 .map() 来渲染一个列表。

import React from "react";
import ReactDOM from "react-dom";
const numbers = [1, 2, 3, 4, 5];
const listItems = numbers.map((number) => <li> {number} </li>);
ReactDOM.render(<ul>{listItems}</ul>, document.getElementById("root"));


相关文章
|
2月前
|
前端开发 JavaScript
JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
|
19天前
|
前端开发 JavaScript 算法
使用 JavaScript 数组方法实现排序与去重
【10月更文挑战第21天】通过灵活运用 `sort()` 方法和 `filter()` 方法,我们可以方便地实现数组的排序和去重。同时,深入理解排序和去重的原理,以及根据实际需求进行适当的优化,能够更好地应对不同的情况。可以通过实际的项目实践来进一步掌握这些技巧,并探索更多的应用可能性。
95 59
|
19天前
|
JavaScript 前端开发
JavaScript 数组方法汇总
【10月更文挑战第21天】这些是 JavaScript 数组中一些常见的方法,它们为我们处理数组提供了强大的工具,使我们能够更加方便快捷地操作数组。你可以根据具体的需求选择合适的方法来实现相应的功能。同时,还可以通过组合使用这些方法来实现更复杂的数组操作。还可以进一步深入研究和探索其他数组方法,以发掘更多的应用场景和潜力。
85 59
|
3月前
|
存储 JavaScript 前端开发
js中map属性
js中map属性
44 1
|
4天前
|
缓存 JavaScript 前端开发
介绍一下 JavaScript 中数组方法的常见优化技巧
通过合理运用这些优化技巧,可以提高 JavaScript 中数组方法的执行效率,提升代码的整体性能。在实际开发中,需要根据具体的业务场景和数据特点选择合适的优化方法。
12 6
|
2月前
|
索引
ES5常见的数组方法:forEach ,map ,filter ,some ,every ,reduce (除了forEach,其他都有回调,都有return)
ES5常见的数组方法:forEach ,map ,filter ,some ,every ,reduce (除了forEach,其他都有回调,都有return)
|
2月前
|
存储 JavaScript 前端开发
js的map和set |21
js的map和set |21
|
2月前
|
JavaScript 前端开发
js map和reduce
js map和reduce
|
2月前
|
存储 缓存 JavaScript
JavaScript 中数组方法的常见优化技巧
JavaScript 中数组方法的常见优化技巧
|
1月前
|
存储 JavaScript 前端开发
js中map属性
js中map属性
18 0