00:00
Hello,大家好,那这个小节我们来实现一下数组的扁平化这样一个函数。什么是数组扁平化呢?其实就是将一个多维数组。然后变成一个一位数组。像当前这个案例啊,大家可以看一下,它是一个三维的。最外层啊,然后里边层,最里边层三层,然后把它变成一个一位数组,这个效果咱们把它称之为是扁平化。好,我们点开编辑器。我呢,这儿也是准备好了一个三维数组,我们希望呢,能够把它变成。这个样子,那就是1234567。这是我们咱们最终的目标。呃,因为这个效果呢,原生的API没有提供,所以说我们要需要自个儿去做。Log,然后呢,FLA1。AR。为什么加一呢?因为咱们实现的方式有两种,这里啊,所以说的话,咱们这加一个E。
01:00
好了,那接下来我们的目标就是对。一这个函数去做实现就可以了。它呢,接受一个参数是一个数组。这上面呢,我们把注释加一下。就是数组的扁平化。好,然后在里边我们做什么事情呢?啊,其实首先第一步呢,我们先声明一个空数组。为什么生明一个空数组呢?因为用它来接收最后的那个结果。啊,他来接受最后那个结果。呃,那么下边一步怎么办呢?我们开始呢,遍历数组。啊,开始拿到数组里边每一个元素啊。开始进行扁平化,好,怎么便利呢?可以使用for循环,也可以使用for each,这里都可以啊,我呢就使用for each去便利了。然后咱们先使用log的方式来输出一下item的元素,这个其实都能够想到,第一次是一,第二次是二,第三次是这个数组,第四次是这个七。
02:02
好,打开浏览器确认一下。好,没有问题,这个onde DeFine哪来的这on DeFine其实是这个14行它的输出,因为该函数呢,并没有写return,所以说它的输出结果就是一个onDeFi。好,那么到这儿之后呢,我们里边做什么事情呢?里边我们要做一个判断。判断当前这个元素啊,到底是不是一个数组。哎,如果说呢,它不是一个数组,咱也可以直接往里边去放啊,如果说是一个数组,咱们再去做扁平化。好,咱们来做判断一下。如果说。A r is a。判断item呢?它是不是一个圆,是不是一个数组?它如果不是个元素呢,这就好办了啊,我们直接result点。把元素往里面放就可以了。啊,这样子就可以把它放到咱们这个数组当中去。然后呢,当然他的话,呃,我们还要再做一个事情,就是要对他做一个重新的赋值。
03:04
为什么要做重新赋值呢?因为如果不做重新赋值的话。这里如果不做重新赋值的话呢。我们原数组这块就是一个空的,你想象一下result就con。啊,它往里边放了个元素,返回的是一个新数组。所以说我们需要拿一个变量去做接收。啊,用它是最为合适,因为待会儿咱们还要往里面累加呢,所以说这种直接再用它去做赋值是最为方便的。好,这是关于它不是数组的一个情况。那如果说它是一个数组怎么办呢?如果说它是一个数组的话呢,我们就用递归的方式再去执行一。然后呢,把item放进来。放进来之后呢,它把这个数组传进来,传进来之后的话,此时AR呢,就变成它了。大家看一下啊,A22就变成它了,进来之后呢,又是一个空数组,再去变力,然后三四往里边放,又来一个五六。
04:06
然后呢,五六进来之后,哎,这个时候呢,又来一次递归。又来S递规,然后呢,五六进来,五六进来之后呢,因为遍历的时候,他们两个都不是一个数组了,所以说呢,就直接。呃,放到一个咱们的result里边,然后最后把它返回就可以了。返回结果。Return一个result。好,那么return之后呢,注意啊,它的返回结果就上一次的返,就是递归的时候,调用的时候,它的返回结果是一个数组,是一个与原来这个结果一模一样的一个数组,所以这个时候我们可以怎么办呢?我们就可以通过。的方式,再推他做一个。这样的连接,把里边元素放到result里边。然后呢,再去做一个赋值。方便后续呢去做一个叠加。
05:01
通过这样一种方式就可以实现。啊,数组的扁平化。好了,我们可以先看看结果可不可以啊。这样的话,咱们代码就已经完成了。切过来,然后刷新页面,可以看一下1234567啊搞定。呃,其实这个地方的话是比较难想的。啊,这两一个点在这。大家想象一下就是FLAT1,我呢,把这个数组放进来。放进来之后呢,开始对齐做扁平化,扁平化的时候呢,就是先来一个空数组,然后呢,三和四它俩不是呃数组,所以说就往这个result里边去进行一个。这样的一个写入,那写完之后,这里又遇到一个数组五和六。那好,那五和六的话呢,注意啊,这个result里边已经有三和四了,对不对,你想象一下啊,在这个情况下,它里边已经有一个三和四了,然后呢,遇到这个谁的遇到第三个元素的时候,他发现是一个数组,那好我再去进行递归。
06:00
那再来调,那么此时数组就变成了五和六了。A22就变成五和六这个数组了,然后进来之后呢,Result啊,空数组,再去变历,发现里边每个元素它都不是数组,所以说呢啊就往里边放了五和六,放了五和六之后结果。就是这里in return,那么在上一次执行flat的时候,参数是这个。数组的时候,我们是第三次循环,第三次循环就是在循环到它的时候。我们进行了递归,那它的返回结果呢,是跟它一模一样的一个数组,我们在这儿呢,直接用。这个谁啊肯去做连接,注意。这个FLA1在传入五和六的时候呢,返回的结果是一个五和六,而且是一个数组,所以我们用这个result呢去它。那么这样一来的话,我们结果就是三四,然后呢,逗号五逗号六啊。形成一个这样的一位数组,再往上层走,再去把它做一个合并,就会形成123456。
07:07
这样的话实现了扁平化。那关于第一种方式,递归的方式实现。啊,扁平化,我们就先到这儿。
我来说两句