特殊的數(shù)據(jù)要求馍悟,數(shù)組為數(shù)組JSON對象畔濒,對象的值只有基礎類型的值和數(shù)組。
需要給最后一層對象額外增加一個字段锣咒。根據(jù)此要求寫出以下深度合并的方法
function deepMerge(source, target) {
let result = {}; //初始化一個空對象
for (let field in source) { //遍歷第一個對象的每個字段
//如果該字段的值是數(shù)組
if (Object.prototype.toString.call(source[field]) === "[object Array]") {
source[field] = source[field].map( //調(diào)用map重組當前字段的值
//遞歸調(diào)用該合并函數(shù)
(value, index) => this.deepMerge(value, target[field][index])
)
}
}
result[field] = source[field];
for (let field in target) { //遍歷第二個對象的每個字段
//查找result是否已經(jīng)有值侵状,添加不同的值
if (!result.hasOwnProperty(field)) {
result[field] = target[field]; //設置該字段的值
}
}
return result; //返回對象
}