这篇文章主要介绍“Javascript怎么实现json合并的场景”,在日常操作中,相信很多人在Javascript怎么实现json合并的场景问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Javascript怎么实现json合并的场景”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
2个json合并,
jQuery 的“extend()”方法有两个原型:合并的方法,分别是浅合并和深度合并,其实浅合并只是json的第一层被合并,而深度合并是全部层数都被合并,分别如下写法:
1.浅合并,target被object1...合并,只有一层
$.extend( target [, object1 ] [, objectN ] )
深度合并,target被object1...合并,包含一层二层三层...
要深度合并, [deep]需要为true, 后面覆盖前面,所以如要要保留后面的,则需要 object1 =$.extend(true,target,object1) ,但target已经变化了
$.extend( [deep ], target, object1 [, objectN ] )
这是jquery自带的,下面带大家看看javascript如何实现。
/**
* 遇到相同元素级属性,以(minor)为准 // 不返还新Object,而是main改变
* mirror
* main
*/
function mergeJSON(minor, main) {
for(var key in minor) {
if(main[key] === undefined) { // 不冲突的,直接赋值
main[key] = minor[key];
continue;
}
// 冲突了,如果是Object,看看有么有不冲突的属性
// 不是Object 则以(minor)为准为主,
//console.log(key)
if(isJSON(minor[key])||isArray(minor[key])) { // arguments.callee 递归调用,并且与函数名解耦
console.log("is json")
//arguments.callee(minor[key], main[key]);
mergeJSON(minor[key], main[key]);
}else{
main[key] = minor[key];
}
}
}
//判断是否是json
function isJSON(target) {
return typeof target == "object" && target.constructor == Object;
}
//判断是否是array
function isArray(o) {
return Object.prototype.toString.call(o) == '[object Array]';
}
测试
var a = {
ccc: {
d: 111,
b: 222,
a: 222,
ee: [{
a: 1
}, {
b: 2
}]
}
};
var b = {
ccc: {
fff: 666,
ee: [{
c: 3
}]
}
};
mergeJSON(b, a);
console.log(a);
console.log(b);
到此,关于“Javascript怎么实现json合并的场景”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。