美文网首页
深度合并

深度合并

作者: Simon_King | 来源:发表于2019-04-03 16:40 被阅读0次

    特殊的数据要求,数组为数组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; //返回对象
    }
    

    相关文章

      网友评论

          本文标题:深度合并

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