数组方法map和foreach(数组的map方法)

数组方法map和foreach(数组的map方法)MDN 上对 Map 和 ForEach 的定义 对数组的每个元素执行一次给定的函数 方法创建一个新数组 这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成 语法 参数 callback 为数组中每个元素执行的函数 该函数接收一至三个参数 数组中正在处理的当前元素 可选 数组中正在处理的当前元素的索引 可选 方法正在操作的数组

大家好,我是讯享网,很高兴认识大家。



MDN上对Map和ForEach的定义

: 对数组的每个元素执行一次给定的函数。

: 方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成

语法

 
  
讯享网

参数

  • callback

    为数组中每个元素执行的函数,该函数接收一至三个参数:

    •    数组中正在处理的当前元素。
    • 可选   数组中正在处理的当前元素的索引。
    • 可选    方法正在操作的数组。

  • 可选

    可选参数。当执行回调函数 时,用作 的值。

返回值

undefined

案例


讯享网

讯享网

特性

1.方法没有返回值

 

2.方法也会跳过数组的空位

讯享网

改变数组值的情况

情况一:修改item的值,原数组没有发生改变

 

情况二:修改item的值,依然没有修改原数组。

讯享网

情况三:修改数组中对象的某个属性时,发现属性改变了。其他值依旧没有改变。

 

改变数组的原理

对于JS中的基本数据类型,如 BigInt 是存在于栈内存中的,在栈内存中储存变量名及相应的值。

对于引用数据类型,在栈中存储了指针,该指针指向堆中该实体的起始地址 。

  • 在第一个例子中,为什么直接修改item无法修改原数组呢,因为item的值并不是相应的原数组中的值,而是重新建立的一个新变量,值和原数组相同。因此,如果item是基础数据类型,那么并不会改变数组里面的值,如果是引用类型,那么item和数组里面的值是指向同一内存地址,则都会被改变。
  • 在第二个例子中,数组中的对象的值也没有改变,是因为新创建的变量和原数组中的对象虽然指向同一个地址,但改变的是新变量的值,也就是重新赋值,即新对象的值为2,原数组中的对象还是{num:1}。
  • 在第三个例子中,由于对象是引用类型,新对象和旧对象指向的都是同一个地址,所以新对象把num变成了2,原数组中的对象也改变了。

的作用与 循环完全相同,只是 会创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。

语法

讯享网

参数

  • 生成新数组元素的函数,使用三个参数:

    • 数组中正在处理的当前元素。
    • 可选 数组中正在处理的当前元素的索引。
    • 可选 方法调用的数组。
  • 可选

    执行 函数时值被用作。

返回值

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

案例

 

从上面案例可知,返回一个经过处理后的新数组,但不改变原数组的值。

map也会跳过空位

讯享网

改变数组情况

map中可改变原数组的情况和原理与forEach相同

方法不会返回执行结果,而是返回。也就是说,会修改原来的数组。而方法会得到一个新的数组并返回。

因为 map 和 forEach 的主要区别是有无返回,所以,当你想基于一个原数组返回一个新数组,可以选择 map,当你只是想遍历数据不需要考虑返回时可以选择 forEach。

参考资料:forEach、map和for循环 - 掘金


小讯
上一篇 2025-06-10 23:12
下一篇 2025-04-23 19:29

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/183018.html