00:00
Hello,大家好,那这个小节呢,我们来实现一个函数,用来。合并对象。啊,就是把多个对象里面的属性呢,咱们合并在一起。这里呢,如果说产生重名不会覆盖。而是会呢?把它们的值都放在一起,形成一个数组。大家可以先看一下这个呆萌实力。啊,这是一个对象A,这是一个对象B。对于这个里边,对于这两个对象里边都有A,都有A属性,大家可以看一下,如果运行完咱这个对象之后啊,运行咱们这个函数之后,它会把A和B2个的内容放在一起。你可以看一下。他把这个数组的元素和这个Z对象呢放在了一起,形成了一个新的数组。然后呢,你看这更为清楚一些,比方说咱们B这块是一个数组二和三。然后呢,上面这个A对象上,它的BB属性是等于一啊,最后一合并就会形成123,形成一个新的数组。
01:01
但如果说两个里边没有重复,那最好了是吧,这个就最省劲了,直接啊把它拿到最后的结果里边就OK。啊,所以说在这地方啊,在这块它不会对属性进行覆盖,而是会对多个对象当中同名属性内容做一个合并,形成一个数组。那好,接下来的话呢,我们开始对它做一个实践啊,首先的话,测试代码我已经准备好了啊,我们只需要做一个事情,就是把这个merge object对象呢啊,这个函数咱们做一个实现。它呢提出的参数呢,是不固定的啊,不个不定个数参数,你可以传两个,也可以传三个都没有问题,所以说我们这儿呢,可以用一下rest参数来做一个表示。那好,那么里边的话,我们先来声明一个空的对象。啊,为什么要说明一个空对象呢?因为我们要把所有结果往里边去放,往这个result里边去放,那好,接下来我们做什么事情呢?就开始挨个对象去过啊,一个对象一个对象里边每个属性往里边去添加,所以说我们需要呢,去遍历所有的参数对象。
02:09
注意啊,ARGS其实是两个参数,一个是它。一个呢,是它啊,所以咱们来遍历一下as.for each。啊,Arg。好,呃,或者是咱们这写一个谁啊,写一个obj吧,这个名字。怪怪的啊,咱们来一个这个这呢写一个obj。啊,这是单独的某一个对象。好,那么以当前代码来为例的话,第一次循环O接所拿到的结果就应该是它。对吧,是一个第一个对象,那好拿到这个对象之后怎么办呢?我们要把里边每一个属性。往result里边去放。所以说要对当前这个对象呢,还要再做一下便利。怎么来便利呢?我们可以这样来便利。啊,获取。当前对象所有的属性。
03:02
object.case把obj放进来。这样来就把A和B2个属性的形成了一个数组获取到了,然后下边我们开始for each,再来一次。好了,那么在这的话呢,K的值是多少呢?K的值其实就是A和B啊,我们可以验证一下,看log,打印一下这个K。保存好,点开浏览器来验证一下。走刷新,你看这ABABC就来了。好,那么拿到键名之后呢,接下来我们就可以往里边去写了。我们能不能直接往里边写入呢?那当然不行了,现在肯定可以,但是呢,后边随着有,如果说有重名的话,就会出现问题,所以我们应该先干嘛呢?先去做一个检测。检测result中是否存在。K的这个属性。如果说result.has own property。就判断有没有这个属性。
04:01
哎,如果说有怎么办,如果说没有怎么办。如果没有,那就简单了,如果没有啊,则直接写入。我们就来一个result,下标来个K就等于谁啊,那个值就行,那值是谁呢?注意啊,现在的话呢,这个K就是我们当前这个对象,以当前来看的话,K就是A。对吧,就是A,我们需要把A这个属性加到result里边,首先result下边K呢,这个属性的结构已经搭好了,下边的话就是要把值存进去,那么这个值来怎么表示呢?哎,别急,我们可以用它obj下边的K。为什么要使用obj呢?你想想OJ是谁?OB皆是咱们在对实参对象进行便历时的那个变量,第一次它所保存的数据就是这个对象,第二次循环保存数据就这就是这个对象。所以说在循环当中,Obj下标K就是当前正在便利的对象当中正在便利的属性它的值。
05:08
所以说我们可以这样来做。那么如果说。啊,如果说它已经存在怎么办?你比如说咱们A和B写完了,这个对象来了,有A,那有A怎么办呢?有A的话我们也不怕,我们可以这样子来做。我们可以用一个数组。用一个数空数组去做一个连接。以当前来为例啊,以这个A来为例,之前result里边已经有这个值了。好,我们呢,可以先把原来那个值先放进来。Result下标K。你想,你比方说你到这儿循环的时候,A你已经有了,而result这个K其实就是这个值。然后呢,我们一合并,就把原来那个值拿过来了。啊,此时内容就跟原来一模一样了,但是你别急,我们还要把新加的那个属性也放进来。
06:00
所以说在这儿再加一个啊。加谁呢?就加这个obj下边K。这样一来,你要是没有,哎,我就往里面加,有的话呢,我就变成一个新的数组。啊,把你呢,先拿过来放上去,然后再把。相同名那个属性也放进来啊。形成一个新的数组。是这样一个操作好了,那么最后的话,咱们再返回整个的结果,Return一下result就搞定了。好了,我们点开浏览器,一起来看一看结果怎么样,刷新页面。点开它,点开它你可以看一下XYZ3个属性都来了,然后呢,B这块123也都有,咱们可以再做一个测试,比方说我这C等于一个200,举个例子啊,或者咱们这写个字符串吧,来个半。那C和C2个都有啊,那么这个时候的话,第一次先把瓣放进去,第二次用数组合并啊,把瓣取出来啊,然后做一个拼接,再把负放进来,做一个这个啊,这个这个追加吧,然后完了之后形成一个新数组,所以说最后的结果呢,它是负和半啊组成的一个啊,半和负啊组成的一个数组。
07:09
好,切过来,我们一起来看看刷新。点开第三个看这八负没有问题。好了,那关于对象合并这个函数封装,我们就先到这儿。
我来说两句