美文网首页
复杂对象转变为简单对象

复杂对象转变为简单对象

作者: CodeBub | 来源:发表于2018-05-20 14:36 被阅读0次

再说这个之前与要先了解一下深拷贝:
首先深拷贝和浅拷贝只针对像 Object, Array 这样的复杂对象的。简单来说,浅拷贝只复制一层对象的属性,而深拷贝则递归拷贝了所有层级,如下:

 var china = {
        nation : '中国',
        birthplaces:['北京','上海','广州'],
        skincolr :'yellow',
        friends:['sk','ls']
      }
      //深复制,要想达到深复制就需要用递归
      function deepCopy(o,c){
        var c = c || {}
        for(var i in o){
        if(typeof o[i] === 'object'){
                  //要考虑深复制问题了
                      if(o[i].constructor === Array){
                        //这是数组
                        c[i] =[]
                    }else{
                        //这是对象
                        c[i] = {}
                    }
                    deepCopy(o[i],c[i])
               }else{
                 c[i] = o[i]
               }
           }
           return c
      }

而如何转化为简单对象呢?如下:

var arr = {a:1,b:2,g:{c:8,d:5},p:[{q:1,w:2},{q:2,w:3}]};
    var array = [];
    function deepCopy(p,c,index) {
        var flag = false;
        if (p.constructor === Array) {
            flag = true;
        };
    for (var i in p) {
      if (typeof p[i] === 'object') {
        if(flag){
                    deepCopy(p[i],array,i);
                }else{ 
                    deepCopy(p[i],array,index);
                }
      } else {
                if(index){
                c[i+'['+index+']'] = p[i];
                }else{
                    c[i] = p[i];
                }
      }
    }
    return c;
  }
    console.log(deepCopy(arr,array))

相关文章

  • 复杂对象转变为简单对象

    再说这个之前与要先了解一下深拷贝:首先深拷贝和浅拷贝只针对像 Object, Array 这样的复杂对象的。简单来...

  • 对象的组合

    在面向对象的编程中,经常用到的一种方式就是将更简单的对象组合形成复杂的对象,而复杂的对象还可以组合形成更复杂的对象...

  • 04参数绑定

    参数绑定(重要)有以下几种 简单类型对象类型(简单对象)包装类绑定(对象里有对象)复杂类型绑定(数组 list m...

  • 知识整理NO.3-组合模式Composite

    组合模式Composite 背景 我们可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象。我...

  • Python 面向对象之第一回合

    一个简单的小案例 函数版用例 面向对象用例 总结 对比:函数: 定义简单/调用简单面向对象: 定义复杂/调用复杂,...

  • 沙盒

    沙盒 简单对象写入文件 NSFileManager 文件管理者 复杂对象写入沙盒

  • 5、创建型设计模式-建造者模式

    建造者模式(Builder Pattern) 使用多个简单的对象一步一步构建成一个复杂的对象,将一个复杂对象的构建...

  • copy()与deepcopy()区别

    可变对象:list dict set 简单对象 复杂对象(嵌套结构) 区别在于浅拷贝的子结构指向原数据地址。 不可...

  • 设计模式-建造者模式

    介绍 建造者模式使用多个简单对象一步步创建复杂对象。 主要解决:将构建复杂对象的过程和它的部件解耦,使得构建过程和...

  • Windows 线程同步

    用户对象:简单高效,功能受限。 内核对象:复杂,但是功能多,可指定超时,防止死锁。 1.临界区(用户对象):适用范...

网友评论

      本文标题:复杂对象转变为简单对象

      本文链接:https://www.haomeiwen.com/subject/rdctjftx.html