00:00
Hello,大家好,那这个小节我们来实现一下数组分块的效果。数组分块呢,就是将一个。长度为N的一个数组就是一个一位数组。然后呢,对其元素进行分组,然后呢,拆成一个二二位数组。就像这个样子,比如说原数子啊,它长这个样子,我们呢,去调用一下这个函数,在咱们最后封装这个函数啊叫T。然后呢,如果说你第二个参数给一个是四的话,就是每四个元素一组形成一个子数组。如果说不满足四个,达不到四个怎么办呢?那么最后这两个它呢,形成一个数组。啊,是这样的一个特点。在这的话,我已经把最终的效果代码已经写出来了啊,就是这个测试代码,大家可以看一下,这是一个数组。啊,总共是七个元素,我这写个三,它的最终结果呢,应该长这个样子。123,这是第一个子数组456,第二个子数组最后还有个七。
01:05
是他最终的一个结果。好了,下边我们开始给大家做一个实践。那首先的话,我们先把结构先搭出来。啊,它有两个参数,第一个参数呢,是这个数组,第二个参数呢,是每一个子数组元素的个数。这块如果呢,第二个参数你不传的话,默认就是一,就是每一个元素它独立成为一个数组。所以咱们这呢,为了方便可以这样来做啊,写一个S等于一。好,然后呢,把参数类型加一下啊,这是数组。这块是一个数字。就是数组的这个分组。好了,那下边的话呢,我们开始来做一个实践,那么这块我们该怎么去做呢?首先我们先声明两个变量。变量。都是数组啊,然后let result等于一个数组。
02:00
这个数组呢,用来存放最终的结果啊,另外呢,咱们还需要一个数组,Tmp等于一个它。为什么还要再去生明一个这样的数组呢?就是因为待会儿呢,我们的元素,比方说123,他得先放到一个。单独的数组里边,然后放完之后再往这个result里边去放,所以说呢,我们的形式它其实这样子的,就是我呢先把123呢,我先造好放在这个数组里边,然后呢,我再把这个123呢往这个数组里边去放。啊,这就是tmp这个数组,它的一个存在的意义。好了,那完成之后呢,下边我们就开始呢,便利。啊,对这个元速组进行便利,我们写一个ar.for each,然后item。那在这我们该做什么事情呢?其实肯定少不了一个步骤,那就是将元素压入到临时数组tmp中,这一步是肯定要做的啊,tmb.push然后呢,Item,但是如果直接这么写呢,很明显是不太对的。
03:06
为什么呢?因为呢,Tmp,如果你每一克都往里边压的话,这个元素它的体积会变得越来越大。啊,所以说我们应该做判断。做什么判断呢?啊,那么我们可以这样来做。要判断TP它的一个元素的长度。是否为零?然后呢,我们判断一下啊,如果说tmp.lens要是等于零。等于零怎么办呢?等于零,我们可以这样子将tmp压到result当中。将。Tmp压入到result中。来一个result.push然后T。在这,同学可能会想一个问题,就是为什么我们要这样子去判断?按照常规判断来说,应该是这样子啊,我呢第一个元素我先把它放到哎,这个数组里边。
04:05
然后呢,第二个我再往里边放,第三个我再往里边放,哎,满足条件之后,这个这个速度已经满了,对不对,满了之后我再把它压到result里边去。这是一个常规的思考。就是让这个零时数组呢。达到一个满的情况,再把它往result里边去压,但是这种判断呢,会有一个问题。什么问题呢?如果说最后只剩一个元素了。大家思考一下,只剩最后一个元素了,那么这个时候呢?数组它不可能会变慢。数组不满,你就没有办法去往里边压了,呃,所以说最终你的结果呢,肯定会有一些问题。所以说我们可以换一种思路去做,就是当这个数组是空的时候。我再往里边去压。啊,往往里边去压东西。然后就压到这个,压到这个咱们的最终这个结果里边这个时候呢,它的结构它长这样子。
05:01
啊,长什么样子的,长这个样子来看一下。诶诶。哎,它长这样子,然后呢,我们再往tmp里边去压,那tmp其实就是这个数组。往里边压,然后再来个一,第二次来个二,第二次来个三。第四次呢,第四次就不能往里面压了,为什么呢?因为这块已经满了,满了之后呢,咱应该往下边一个去压,所以说我们这儿还要再去做一个判断。啊,如果说tmp.length要是等于了S达标了。对吧,满足了已经满了,满了之后呢,再给它清空CP,等于一个这个空数组完事。然后最后呢,再把这个结果。大家可以想象一下啊,当我们这个满了之后呢,诶tmp清空。等下次一循环A又为零了,又往里又为零的话,我再往里边压。然后再往里面压四五。六哎,又满了啊,又满了话再清空,清空完之后再往上压进来,压进压一个空数组,再把七压进来。
06:03
这样一来的话呢,就把结果实现了。好了,我们来看看效果怎么样啊,然后点开。先打开浏览器。然后刷新,然后点开,你看这1234567没有问题啊。啊,当然你如果说你这儿呢,不传不写三是吧,那么看结果。点开,然后每一个元素独立成为一个数组。然后在这的话,咱们为了严谨一些,可以在这做再做一个判断。啊,如果说ar.lengths要是等于零,它如果说是一个空数组的话,那咱直接返回一个。空的数组就完事。下边代码那就不走了。好了,那么到这儿的话,关于这个数组分块,数组分块。这个效果我们就写完了。
我来说两句