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

数组方法map(数组方法map有返回值么)为什么要写这么一篇文章 原因是今天下午水群的时候 有个小伙伴分享自己的面试题 其中一个是和的区别 其实是蛮简单 蛮基础的一道题 但是他是这么回答的 一个会改变原数组 一个不会 我当场就懵了 我以为是整活 谁知道是认真的 并且给我发了一篇文章 我看完更蚌埠住了 那么多对的文章 你偏偏挑个错的 然后我发现 真的很多人都这么认为的 那这真的是一件很可怕的事情 明明你自己试一下就知道了 甚至有不少文章都是这么写的 但是我也看到了不错的文章 写的已经不错了 那么咱们 就这个简单的问题



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

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

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

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

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

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

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

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

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



再简单点对比

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

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


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


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

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


那么咱们使用呢


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

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



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


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

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

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

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

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

我们再回头看这个

为什么他这个修改了呢

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

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

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

j


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

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

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


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

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

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

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



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



编程小号
上一篇 2025-02-23 18:01
下一篇 2025-03-08 16:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/26525.html