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

deepCopy for all fields and arrays contained in an object AngularJs

本文关键字:字段 数组 deepCopy AngularJs 包含 用于 对象      更新时间:2023-09-26

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

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:超过了最大调用堆栈大小。有什么帮助更新我的功能吗??

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

function deepCopyEn(src) {

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