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 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) t1的series是数组
t2的series是对象 lz想得到的数据格式是什么先贴出来 一般给我这样数据的后端会被我捶死。
页:
[1]