原生JavaScript实现JSON合并(递归深度合并)
Posted catgatp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原生JavaScript实现JSON合并(递归深度合并)相关的知识,希望对你有一定的参考价值。
// 遇到相同元素级属性,以(minor)为准 // 不返还新Object,而是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]; } } } function isJSON(target) { return typeof target == "object" && target.constructor == Object; } 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合并(递归深度合并)的主要内容,如果未能解决你的问题,请参考以下文章