有没有想过 JavaScript 数组映射是什么? 它能做什么? 或者什么时候应该使用它? 这篇文章给你一个完整的介绍! 首先让我们看一下即将到来的map方法的定义。
认识方式
根据 MDN 文档:
map() 方法创建一个新字段,其中包含对链表中每个元素调用所提供函数的结果。
让我们简化一下。
JavaScript 映射方法采用一个字段 (array1)javascript 数组 包含,并通过对给定字段 (array1) 中的每个元素调用函数来创建一个新字段 (array2)。 为了进一步解释这一点,我们将使用一个示例来了解 map 方法的作用。
让我们使用常规的 for 循环来演示 map 函数的作用。 典型的情况是,如果我们想要给定字段中所有元素的平方字段,我们可以使用 for 循环来实现,如下例所示:
const array = [2, 5, 9];
let squares = [];
for (let i = 0; i < array.length; i++) {
squares.push(array[i] * array[i]));
}
console.log(squares); // [4, 25, 81]
console.log(array); // [2, 5, 9]
上述哪一项已经实现? 它循环遍历一个字段,找到该字段中每个元素的平方并将其放入最初定义的平方字段中。
这与 map 函数的作用类似,只不过您不需要定义另一个链表来将结果推送到其中。 地图功能手动执行此操作。 那么让我们使用map函数来完成上述操作。
PS:示例中使用了箭头函数。
const array = [2, 5, 9];
let squares = array.map((num) => num * num);
console.log(squares); // [4, 25, 81]
console.log(array); // [2, 5, 9]
请注意,使用 map 方法来完成同样的事情要容易得多。 另请注意,初始字段保持不变,这在函数式编程中非常有用。 现在让我们更深入地了解一下map 方法。
Map方法及其语法
映射函数的语法如下:
let newArray = array.map((currentValue, index, array) => {
// return element to new Array
});
以下是关于 map 方法的一些注意事项:
它返回一个新的链表。
它不会改变调用它的原始字段,即原始字段保持不变。
map 函数处理的元素范围在第一次调用之前设置。 如果在映射开始后将元素添加到链表中,则该元素不会被退回。
何时使用地图方法
鉴于链表还有其他类似的方法,例如 ForEach 方法,您可能想知道“什么时候应该使用(或不使用)map 方法?” 以下是一些可以帮助您做出决定的问题:
我是否需要从该方法返回一个字段以及是否会使用返回的字段?
我是否从回调函数返回一个值?
如果您对这些问题中的任何一个的回答是“是”,则应该使用地图功能。 如果两种情况的答案是否定的,则应使用 forEachorfor..of 代替。
地图方法示例
除了前面使用的示例之外javascript 数组 包含,这里还有一些其他示例,说明您可以使用地图方法执行哪些操作。
示例 1:从对象字段中提取值
我们想要从对象字段中提取单个值。 例如,在一群男孩中,我们想要获取男孩的年龄。
const girls = [
{name: 'Sarah', age: 19},
{name: 'Laura', age: 10},
{name: 'Jessy', age: 29},
{name: 'Amy', age: 23}];
let girlsAges = girls.map((girl) => girl.age);
console.log(girlsAges); //[19, 10, 29, 23]
示例 2:仅对单个元素应用反弹
如果我们希望反弹仅适用于链表中的单个元素,例如素数,我们可以使用 if 语句来实现。
const numbers = [4, 9, 36, 49];
let oddSquareRoots = numbers.map((num) => {
if(num % 2 != 0) {
return Math.sqrt(num)
}
return num;
})
console.log(oddSquareRoots);
或使用三元运算符
const numbers = [4, 9, 36, 49];
let oddSquareRoots = numbers.map((num) => {
return num % 2 !== 0 ? Math.sqrt(num) : num
})
console.log(oddSquareRoots);
然而,实现此目的的更有效方法是使用 JavaScript 数组过滤器技巧。 这将在我的下一篇文章中讨论。
综上所述
如果使用正确,JavaScript Array Map 方法是一种简化代码的方法。 如果您还有其他如何使用地图方法的示例,请在评论部分分享。