哈喽同学们,今天这节课一起来过一遍关于JS中高频的面试真题的强劲。接下来的内容会完全以面试真题的作答作为回答的标准。
先来看第一道题,第一道题就是今天所讲的题目全部都是大厂或者中大厂的面试真题。第一道题就是如何自定义实现unshift的效果。面对这样的一道题目相信同学们直接看到这道题目。
首先要知道ship的效果是什么?其实unshift对于我们来说是进行数组的操作的。比如现在有一个对应的初始化的数组,比如通过数组的unshift,数组的unshift肯定是自己定义的。比如定一个my unshift,要实现men on shift。
比如on shift的时候首先来进行第一个值的输入,假如输入一个三,当输入完三之后接下来再会去传递的值。第一个值对于我们来说是error的on shift,第二个值希望是与当前的三和剩余的几个参数能够直接去生效。这样的效果对于我们来说就是希望最后得到的结果就是三、一、二、三这样的数组。
一起来看看怎么去实现这样的效果。因为实现的功能要针对于数组的圆形上去用,所以选择的是数组的圆形,从 protep上实现on shift。on ship肯定是一个方法的实现。
·首先要在数组打头的时候添加一个或者多个元素,因为on ship能够去添加多个元素的。比如这边可能添加一个三、四、五,希望最后得到的效果就是三、四、五就在输入的前面。
·添加的时候比如此时定义一个lens,这个lens就是当前arguments的长度,arguments就是接收的数组的长度。
·定义好这个数组之后,接下来因为接下来要往前塞值,是不是往前塞?塞值的时候就会从后往前获取到元素。比如let定义i是当前数组的长度,一块考虑数组最后的最终的下标,是let's减一,大于等于零来减,这是此时执行的效果。
针对于当前的元素in element获取当前而给此生当前指定的元素,获取到元素之后此时要做什么事?把值从后往前依次的往前塞过去,比如34是把5塞到最前面,把4塞到最前面,把3塞到最前面,是不是?
针对于这样的效果,此时调用的是space,此时this the space指的是调用它的人,比如对area,此时获取的space针对于零开始,针对于零的时候从第零个,并且不会去替代三,从第零个开始不会去替代,并且往里面去塞对应的元素。
进行这样的负循环之后最终返回当前的link,这就是当前的数组所实现的效果。按照刚刚说的这种实现area,比如塞个三或者塞个三二一,来看看接下来能够实现的效果是怎样的?大家稍等,跟大家去投个屏,这是刚刚说的功能。
在这样的例子里面来看,my on shift放到下面,首先定义数组,这时会发现返回的值就是三二一,并且当前的值的长度是有对应的返回的,这也符合对应shift的实现效果。