ramda 几个 merge 的区别
mergeRight 在遇到键名相等时, 直接将该键设置为第二个参数对应的值
mergeDeepRight 会继续比较相等键里面的对象的值, 然后进行赋值, 直到最深层
表现上的不同就是, mergeRight会丢失前一个对象的值, 而mergeDeepRight会保留两者不同的部分, 相同部分使用第二个参数的值
const R = require("ramda")
const a = {
a: {
b: {c: 1}
}
}
const b = {
a: {
b: {d: 2}
}
}
console.log(R.merge(a, b)) // { a: { b: { d: 2 } } }
console.log(R.mergeRight(a, b)) // { a: { b: { d: 2 } } }
console.log(R.mergeLeft(a, b)) // { a: { b: { c: 1 } } }
console.log(R.mergeDeepRight(a, b)) // { a: { b: { c: 1, d: 2 } } }
console.log(R.mergeDeepLeft(a, b)) // { a: { b: { c: 1, d: 2 } } }