00:00
哈喽,大家好,那这个小节呢,我们来封装一个函数叫破,这个函数呢,用来删除数组,数组当中的元素。第一个参数呢,是我们要操作的数组,那么后边的参数呢,为要删除的元素。啊,是这样的一个特点,然后它的返回,注意啊,它的这个原数组会发生改变,也就是当我们在运行完函数之后,这个原数组就只剩下一和五了,因为三和七已经被我们给删掉了,而这个函数的运行完毕之后,它的返回值是我们删除掉的元素,也就是三。三七这三个元素是我们删除掉的。那好,这样的话呢,我们把代码呢,做一个实践啊,顺便把这个代码咱也拿过来。好,用它呢,来做一个最后的测试。然后接下来我们来先把基本结构搭一下,发个,然后pull,第一个参数呢为数组,第二个参数呢是就后边参数,咱们就统一用一个RA参数来表示。
01:08
好,然后这里我们写一下它的类型。然后呢,里边我们做什么事情呢?里边首先我们要先声明一个空的数组。啊,为什么要先声明一个空数组呢?就是因为我们要用它来存放最后返回的结果。那返回的结果里边是什么来着,就是呃,要保存的是删掉的元素。保存删掉的元素。那么接下来的话呢,我们就开始对这个数组来做一个遍历,其实操作起来也比较简单啊,直接对它做一个遍历,判断这个元素在不在这个数组里边。判断这个元素在不在这个数组里边,如果说不在,哎不在的话呢,就表明这个元素咱们得啊,最后留着如果说在,比方说这个三它在对吧,在的话,我们就我们就得把这个元素呢给删掉,并且把这个值得放到result这个结果的数组当中去才可以。
02:10
那好,接下来的话呢,我们开始来便利一下。便利AR。For循环let I等于零,I呢小于a r.Les I加加。然后接下来我们开始呢,做一个判断,判断什么呢?判断当前元素是否。啊,存在于args这个数组中。也就是判断这个数字啊,到底在不在后边这个参数形成的数组当中。如果不在。就不用,哎,如果说啊,对,如果不在的话呢,就不用管它,如果说在的话,我们就得做一下删除。好了,哎,如果说as.include把ari咱放进来。
03:00
如果说你这个数字要是在这里边的话,我们就得删除一下。删除谁呢?哎,删除一下这个当前的元素。也就是AGS。X应该是a.Li。删的时候注意啊,咱们要用Li来删呀,因为spli是可以改变元素组的啊,它呢是可以删除呃,指定个数元素。好了,那么接下来的话呢,它这个注意它还要传递一个参数,就是从哪开始删啊,我们呢,因为下边呢,就是正在变,正在这个递增,所以说呢,只要检测到在啊,我们就把当前那个下标放进来。好,把爱放进来。然后呢,这是从哪开始删,第二个参数呢,是删几个,我们再删一个就行。啊,删一个好了,那么删完之后呢,下边我们还要再做一个事情,就是当当前将这个当前元素的值。啊,存入到这个result中。
04:02
啊,像这样子就是来一个。这个result.push改一个AR下标I。好,比方说呢,举个例子,咱们就以三来为例,三呢是第二次循环了,I呢已经等于是一了啊,所以说我们应该是把一放进来,把这个元素呢给它干掉。啊,元素干掉啊,然后呢,Result push ari,把这个数字呢,再放到result里边。它这块有一个小的问题啊,什么问题呢?就是咱们这个先后顺序有点问题啊,为什么说先后会顺序有问题呢?因为你想想你把这个三如果删掉之后。你的I的值是不是还是一啊。对吧,I的值还是一,然后呢,你这说AR。啊,你把它这个一放进来,那此时它的值就不应该它就已经不再删了,不再不再是三了啊,而变成了五了,所以说呢,我们这儿呢,这样子做呢,会有一个问题。
05:00
啊,应该怎么办呢?我们应该这样子做。先去保存,然后呢再删啊,这样的话问题就可以解决。而删完之后呢,我们下边还要再做一个事情干嘛呢,就是这个下标啊。啊,得做一个自检。I呢,在减减,为什么I要自减呢?大家可以想象一下,如果说我们把它已经给删掉了啊。啊,咱们循环这个值的是一啊到一这个位置,然后呢,我们一删的话,这个时候啊。下边的话它会把它删掉,然后呢往回挪一位,所以说五的话就会到第二个位置。等这次循环完毕之后,I呢,就要自增为二了,它就直接跳过这个五,直接走下一个三了。啊,我再来给大家描述一下这个情况啊,就是咱们如果说不自检会出问题,比方说咱们大家A的值是一。啊,I的值是一啊I的值是一的话,首先我们把三呢先压到这个result里边。压完之后呢,再删除,把这三删掉啊,数组就变成了一逗号五逗号三了。
06:03
成这样子了,然后循环完毕之后,如果你I不自增I呢,就会变成二,二的话,就直接012到这儿了,它去操作下一个三了,跟这个五就没关系了,所以说为了能够呢,把这个顺序搞对,咱们应该再让N字减一下,让它变成一,再去对这个五做一下处理。啊,这样的话,我们的循环就没有漏掉元素。好,这样一来的话呢,我们就完成了,最后呢,再做一个返回。啊,Return一个result搞定,下边我们来看看效果怎么样啊,然后点开。浏览器。走看这结果是337,顺便再看一看原数组,咱们这这样来做一下啊,这个是AR,等于我把这个数组放外边。啊,因为咱们要检测一下它原数组到底有没有发生变化,来个A2看看到底有没有把这个237删掉,就是把这个三和七删掉啊。
07:02
AR的正确结果应该是一和五结果来刷新,看这一和五没有问题好了,这是当前的话,关于数组一个删除,还有另外一个呢,是这样子的,就是PRO2,我们直接给他实现一下。Consider log打印一下,二第一个参数呢,还是那个数组,第二个参数呢,也是一个数组,是把要删除的这个元素呢,放到一个数组里边。就这么点区别,上边这个是单个参数,下边这个呢,是独立的一个数组。其实这个有点像谁啊,有点像这个call和apply那个。一个差异啊,那样那样一个那样关系。好了,那下边我们来实现一下,这个也比较好做啊,我们直接。把它呢先写一下啊PRO2第一个参数是数组,第二个参数的话也是一个数组。然后呢,其实这呢,咱们可以直接去调谁啊,调这个破就行了,直接return一下破括弧,第一个参数是数组,你这不是个数组吗?哎,我可以给给你做一个展开,变成一个点点点values搞定。
08:11
好了,来验证一下,看好使不好使,切过来刷新一面,你看结果是一模一样的啊,然后我们还可以再加一些,比如说把这个二也加进来。切过来右键刷新看,这删除元素就多了一个二没有问题。好了,那关于删除元素这块的功能封装,我们就先到这儿。
我来说两句