当前位置:网站首页 > 编程语言 > 正文

数组方法map(数组方法map有返回值么)



为什么要写这么一篇文章,原因是今天下午水群的时候,有个小伙伴分享自己的面试题,其中一个是和的区别,其实是蛮简单,蛮基础的一道题,但是他是这么回答的

一个会改变原数组,一个不会

我当场就懵了,我以为是整活,谁知道是认真的,并且给我发了一篇文章

我看完更蚌埠住了,那么多对的文章,你偏偏挑个错的

然后我发现,真的很多人都这么认为的,那这真的是一件很可怕的事情,明明你自己试一下就知道了,甚至有不少文章都是这么写的,但是我也看到了不错的文章,写的已经不错了

那么咱们,就这个简单的问题,咱们浅浅地说一下~

简单的区别我们可以在上看看

简单来说什么意思,会返回一个新的数组,而不会,实际上是因为不会返回任何值(实际上返回的是),而 是有返回值的,是一个新数组

我们可以简单手写一下,看的会更直观一些

再简单点对比

 和  的实现原理相似。它们都是通过遍历数组,对数组的每个元素执行特定的函数。区别主要在于它们处理函数返回值的方式不同。 忽略函数的返回值,而  则将函数的返回值收集到一个新的数组中。

在内部,这两个函数可能会使用一个类似于下面的循环来遍历数组:

在  的内部实现中,还会有一个新的数组用于收集每次调用回调函数的结果。这个新的数组最后会被返回:

那么这个时候,有人可能会想,那我使用的时候,加个不就得了,咱们先不说能不能实现,就是真实现了,我觉得是没什么实际意义的,尽管你可以在回调函数中添加返回语句,但这个返回值不会被  方法捕获或使用

那接下来咱们看看能不能实现吧

那么咱们使用呢

到这里,我相信大家就能明白了

这需要看我们面对的数据类型,会分为和

我们发现是不会进行改变的

就不再写了,也是会改变的

所以重点来了,我们回到这个问题:,显而易见这个答案毫无疑问是错误的

这里我们其实应该思考的是,为什么基础数据类型不会更改,引用类型会更改

这是因为在使用  和  方法时,对元素的修改会直接反映在中。这是因为引用类型的元素实际上存储的是),。因此,通过可以访问和修改中的元素。

而它们在栈内存中直接存储变量与值

我们再回头看这个

为什么他这个修改了呢

因为使用的是。相当于你平常的 。这样自然是可以修改的。

这里注意: 方法无法通过使用  语句来中断循环。  语句用于中断循环的功能只适用于  循环或  循环

这里给大家点例子吧,一下就能看懂了

j

作为最常见的几个之一,我觉得搞懂它是有必要的,当然,我这里说的其实是不全的,因为网上的文章较多,文档也很详细,这篇文章主要的目的是帮助一些小伙伴纠正一下~

最后,如有哪里不正确,请您指正~

这里是文章发出一段时间的致谢补充,很感谢评论区的一些建议和指正,主要是我在这里,说出了它可以跳出循环(本次循环),大家进行了指正

挺多的哈,就不都截图了,感谢大家指出的问题!这里的确是我的表述不清,引起歧义和误导

我其实想表达的意思和上面是一样的,但是我并没有表述清楚,而且选择了放代码的方式,并不直观

作为一篇技术文章,应该有其严谨性,所以在这里感谢大家的指正~

同时也欢迎大家的建议,希望您在指出的时候,可以指正地清晰一点,这样方便我进行思考和更改,为大家产出更好的文章~



原文链接:https://juejin.cn/post/

到此这篇数组方法map(数组方法map有返回值么)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • ddP贸易术语是什么意思(ddp贸易术语示意图)2025-04-02 11:45:09
  • ip1180打印机清零方法(ip1180清零图解)2025-04-02 11:45:09
  • 双系统卸载一个系统(双系统如何卸载另一个系统)2025-04-02 11:45:09
  • 在目录打开命令窗口(怎么在当前目录打开命令窗口)2025-04-02 11:45:09
  • 用diskgenius制作dos启动盘(纯dos启动盘制作)2025-04-02 11:45:09
  • u盘启动盘怎么做win7(u盘启动盘安装win7系统详细过程(菜鸟看就会))2025-04-02 11:45:09
  • 查看域名ip命令(查看域名ip命令有哪些)2025-04-02 11:45:09
  • 怎么破解pdf文件权限密码设置(pdf怎么破解密码破解)2025-04-02 11:45:09
  • jmj是哪个明星(jn是哪个明星)2025-04-02 11:45:09
  • 如何拆袋子包装线(包装袋怎么拆线)2025-04-02 11:45:09
  • 全屏图片