大家好!我叫戴向天
QQ群:602504799
如若有不理解的,可加QQ群进行咨询了解
getType详情地址 juejin.cn/post/699055…
// 数据进行深度合并
function dataDeepMerge (baseObj, newObj) {
// 遍历每一个key名
for (const key in newObj) {
// 判断原数据是否有相同的字段名称
if (key in baseObj) {
// 获取当前key值数据类型
const baseType = getType(baseObj[key])
// 获取需要被合并的key值数据类型
const newType = getType(newObj[key])
// 判断数据类型是否一致
if (baseType === newType) {
// 判断是不是json数据
if (baseType === 'json') {
// 递归处理
baseObj[key] = dataDeepMerge(baseObj[key], newObj[key])
} else if (baseType === 'array') { // 判断是不是数组
const arr = baseObj[key].concat(newObj[key])
// 去重合并
baseObj[key] = [...new Set(arr.map(t => JSON.stringify(t)))].map(s => JSON.parse(s))
} else {
// 其它的数据类型处理
baseObj[key] = newObj[key]
}
} else {
// 当数据类型不一致的时候进行处理
baseObj[key] = newObj[key]
}
} else {
// 在原数据上面添加相对应的数据信息
baseObj[key] = newObj[key]
}
}
// 返回最终的结果
return baseObj
}