You've already forked dev-sidecar
mirror of
https://github.com/docmirror/dev-sidecar.git
synced 2025-11-26 14:10:40 +08:00
refactor: 子进程
This commit is contained in:
57
test/mergeTest.mjs
Normal file
57
test/mergeTest.mjs
Normal file
@@ -0,0 +1,57 @@
|
||||
import lodash from "lodash";
|
||||
|
||||
const defConfig = {a:{aa:1,bb:2},b:{c:2},d:[1,2,3],e:{ee:1,aa:2}}
|
||||
const newConfig = {a:{aa:1,bb:2},d:[5],e:{bb:2,ee:2,aa:2}}
|
||||
|
||||
const result = { d: [ 5 ],e:{ee:2} }
|
||||
|
||||
const load = {a:1,d:[5,1,2,3]}
|
||||
const DELETE = '____DELETE____'
|
||||
// lodash.mergeWith(defConfig,newConfig, (objValue, srcValue, key, object, source, stack) => {
|
||||
// console.log('stack', stack,'key',key)
|
||||
//
|
||||
// if (lodash.isArray(srcValue)) {
|
||||
// return srcValue
|
||||
// }
|
||||
// if(lodash.isEqual(objValue,srcValue)){
|
||||
// //如何删除
|
||||
// return DELETE
|
||||
// }
|
||||
// })
|
||||
|
||||
function doMerge (defObj, newObj) {
|
||||
const defObj2 = { ...defObj }
|
||||
const newObj2 = {}
|
||||
lodash.forEach(newObj,(newValue,key)=>{
|
||||
// const newValue = newObj[key]
|
||||
const defValue = defObj[key]
|
||||
if (lodash.isEqual(newValue, defValue)) {
|
||||
delete defObj2[key]
|
||||
return
|
||||
}
|
||||
|
||||
if (lodash.isArray(newValue)) {
|
||||
delete defObj2[key]
|
||||
newObj2[key] = newValue
|
||||
return
|
||||
}
|
||||
if (lodash.isObject(newValue)) {
|
||||
newObj2[key] = doMerge(defValue, newValue)
|
||||
delete defObj2[key]
|
||||
} else {
|
||||
// 基础类型,直接覆盖
|
||||
delete defObj2[key]
|
||||
newObj2[key] = newValue
|
||||
}
|
||||
})
|
||||
// defObj 里面剩下的是被删掉的
|
||||
lodash.forEach(defObj2, (defValue, key) => {
|
||||
newObj2[key] = null
|
||||
})
|
||||
return newObj2
|
||||
}
|
||||
|
||||
console.log(doMerge(defConfig,newConfig))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user