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

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

最佳答案

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

function deepCopyEn(src) {


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

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

关于javascript - DeepCopy 用于 AngularJs 对象中包含的所有字段和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36198905/

相关文章:

javascript - 随机脚本错误。在 Angular 单元/集成测试中

Javascript - 按 2 个属性对对象数组进行排序

javascript - 哪个是确保拆分后最终得到大于 1 的数组的正确方法?

javascript - Angular $http无法发送内容类型 header

javascript - 使用 Nightwatch.js 切换到一个框架

javascript - 使用jquery检查div的内容

javascript - 使用 Angular JS 组件创建表单容器

javascript - Jhon Papa Angular 风格指南 Factory - 对象内的函数未运行

javascript - ie10+ Angular 选择问题

javascript - 触发链 promise