对象AngularJs中包含的所有字段和数组的deepCopy

时间:2016-03-24 11:18:16

标签: javascript angularjs

我想复制同一个对象的其他字段中的一些字段,如本演示所示:

var customers = {
    apple: {
        papa: {
            en: "cool" 
        }
    },
    oranges: {
        papa: {
            en: "cool" 
        }
    } 
};

function deepCopyEn(src) {


    if (src.hasOwnProperty("en")) {
      src.fr = src.en;
      src.es = src.en;
    }
    else {
        if (src.constructor === Array) {
            for (var i = 0; i < src.length; i++) {
                deepCopyEn(src[i]);
            }
        }
        else {
            for (var prop in src) {
                if(src.hasOwnProperty(prop)) {
                    deepCopyEn(src[prop]);
                }
            }
        }
    }
}

deepCopyEn(customers);

console.log(customers);

但是当我尝试使用带有数组的类而另一个提交函数不起作用时,这是一个示例http://pastebin.com/K7EjAnu1它给出了这个错误:RangeError:超出了最大调用堆栈大小。有任何帮助来更新我的功能??

1 个答案:

答案 0 :(得分:1)

您可以检查标量类型......

function deepCopyEn(src) {


    if((/string|number|boolean/).test(typeof src)) {
        return;
    }

    if (src.hasOwnProperty("en")) {
    ....