cqwcns 发表于 2019-12-23 15:55

js 对象合拼的问题



有两个动态生成的对象,格式类似如下:
let t1={"type":"pie","tooltip":{},"legend":{},"series":[{"name":"标题","type":"pie","radius":["0%","70%"]}]}
let t2={"series":{"radius":["10%","70%"]}}


我现在需要将这两个对象合拼起来(相同的覆盖掉),类似数组的push,我尝试用$.extend,但发现这样是直接覆盖,变成这样了:
{"type":"pie","tooltip":{},"legend":{},"series":{"radius":["20%","70%"]}}
可见这样会覆盖掉一部分数据,这样不符合要求。


由于两个对象是动态生成的,我不能像这样t1['series']['radius']=t2['series']['radius']把代码写死。


所以,像我这样的需求,代码要怎么写?谢谢


AIandDeng 发表于 2019-12-23 16:26

本帖最后由 AIandDeng 于 2019-12-23 17:00 编辑

你写错了吧,一个series是对象一个是数组。

瞎写的。

let t1={"type":"pie","tooltip":{},"legend":{},"series":{"name":"标题","type":"pie","radius":["0%","70%"]}}
let t2={"series":{"radius":["10%","70%"]}}


Object.prototype.user_extend = function(target){
    for(let i in target){
      //不含的属性,直接添加
      if(!this.hasOwnProperty(i)){
            this = target;
      }
      //类型不同直接覆盖
      else if(typeof this != typeof target){
            this = target;
      }
      //类型相同且不是引用类型
      else if(typeof this != 'object' ){
            this = target;
      }
      //是引用类型
      else{
            this.user_extend(target);
      }
    }
}

t1.user_extend(t2)

冰茶荼 发表于 2019-12-23 16:49

t1的series是数组
t2的series是对象 lz想得到的数据格式是什么先贴出来

52P 发表于 2019-12-23 17:01

一般给我这样数据的后端会被我捶死。
页: [1]
查看完整版本: js 对象合拼的问题