深度合并

特殊的数据要求,数组为数组JSON对象,对象的值只有基础类型的值和数组。
需要给最后一层对象额外增加一个字段。根据此要求写出以下深度合并的方法

function deepMerge(source, target) {
    let result = {}; //初始化一个空对象
    for (let field in source) { //遍历第一个对象的每个字段
        //如果该字段的值是数组
        if (Object.prototype.toString.call(source[field]) === "[object Array]") {
            source[field] = source[field].map( //调用map重组当前字段的值
                 //递归调用该合并函数
                (value, index) => this.deepMerge(value, target[field][index])
            )
        }
    }
    result[field] = source[field];
    for (let field in target) { //遍历第二个对象的每个字段
        //查找result是否已经有值,添加不同的值
        if (!result.hasOwnProperty(field)) {
            result[field] = target[field]; //设置该字段的值
        }
    }
    return result; //返回对象
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。