您现在的位置是:网站首页> 编程资料编程资料
Javascript实用方法之json合并的场景分析_javascript技巧_
                    
                
                2023-05-24
                327人已围观
            
简介 Javascript实用方法之json合并的场景分析_javascript技巧_
场景
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如何实现。
代码
1.深度合并(递归)
/** * 遇到相同元素级属性,以(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合并的文章就介绍到这了,更多相关js json合并内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
                
                
相关内容
- Vue判断字符串(或数组)中是否包含某个元素的多种方法_vue.js_
 - vue3中实现使用element-plus调用message_vue.js_
 - Vue3后台管理系统之创建和配置项目_vue.js_
 - 深入了解Javascript的事件循环机制_javascript技巧_
 - 详解Jest 如何支持异步及时间函数实现示例_JavaScript_
 - VsCode工具开发vue项目必装插件清单(推荐!)_vue.js_
 - vue中v-if和v-show使用区别源码分析_vue.js_
 - vue eslint报错error "Component name "*****" should always be multi-word"解决_vue.js_
 - axios二次封装的详细过程与跨域问题_vue.js_
 - 在node中如何调用python脚本_node.js_
 
                                
                                                        
                                
                                                        
                                
                                                        
    