专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

前端面试 JS 改变原数组 #前段学习

ins518 2024-12-13 14:00:24 技术文章 16 ℃ 0 评论

当被面试官问到 javascript 如何在原来数组上每一项+1。

看似简单的问题,却有不少同学会在这个问题上踩坑。

题目很简单,这里有一个数组[1,2,3,4,5],希望通过一段代码实现,继续打印该数组时输出[2,3,4,5,6]。

但部分同学首先想到用 map 去实现,可需知道 map 会返回一个新数组,正常情况下输出的依然是[1,2,3,4,5],只有输出新数组时才会是[2,3,4,5,6]。

另外,有些同学说可以用 forEach,但 forEach 其实不会改变数组元素,正常用 forEach 打印依然是[1,2,3,4,5],从这个角度理解,这里其实接受一个 copy,copy 本质上就是一个分身,在分身里 return,把代码写成这样,大家就清楚 item 跟原数组完全没关系,它只是函数参数里的变量,这样输出[1,2,3,4,5]大家就会清楚。

所以要记住 map 会返回新数组,而 forEach 不会改变原数组,那该怎么做?这题用最简单的原始 for 循环,这样就能真正改变数组元素,利用下标加 1,这种情况下打印出来就是[2,3,4,5,6]。

当面试官说硬要用 forEach 怎么实现?用 forEach 也没问题,如果用 forEach 可以这样,forEach 有第二个参数,即 list.index++,这种情况下也能返回[2,3,4,5,6]改变数组元素。

有些刁钻的面试官说在 forEach 里不希望访问到外面的 list,怎么去做?里面不能出现 list,其实 forEach 还有第三个参数,一般数组方法都有第三个参数是指向数组本身的,用 self 把位置变成 self.index++,相当于就是刚才说的 list.index++,这种情况下也能实现。

基本上这个问题很简单,但没想到很多同学会在这里踩坑,当然如果有更多其他方式也欢迎在评论区写下来,觉得有帮助的同学点赞收藏分享一下。关注我,一起走进不一样的前端世界。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表