javascript - 基于路径合并 JavaScript 对象的最短方法

标签 javascript object lodash javascript-objects

有人知道我如何进一步压缩我的 mergePath 方法,该方法根据键/值路径合并两个对象上的键?我的下面的解决方案使用 Lodash。

let obj1 = { z: {fields: { a: "200", b: "2" }}}
let obj2 = { z: {fields: { a: "2", b: "20" }}}
let objsPath = "z.fields"

let mergePath = (objsPath, obj1, obj2) => (
  _.set(obj1, objsPath, {..._.get(obj1, objsPath), ..._.get(obj2, objsPath)})
)

最佳答案

您可以使用_.merge()将路径从 obj2 复制到 obj2 。然后你可以返回 obj1 (我使用了 comma operator ):

const obj1 = { z: {fields: { a: "200", b: "2" }}}
const obj2 = { z: {fields: { a: "2", b: "20" }}}
const objsPath = "z.fields"

const mergePath = (objsPath, obj1, obj2) => (
  _.merge(_.get(obj1, objsPath), _.get(obj2, objsPath)), obj1
)

console.log(mergePath(objsPath, obj1, obj2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

关于javascript - 基于路径合并 JavaScript 对象的最短方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50398794/

相关文章:

javascript - Angularjs 删除带有空字段的对象

Javascript 不止一个 RegEx 反向引用

javascript - 如何在 JavaScript 中使用两个数组创建对象文字数组

javascript - 如果属性值为 true,Lodash 按多个属性分组

javascript - Lodash _.debounce 具有用于独特参数变体的单独队列

javascript - 按多个属性对数组中的对象进行排序

javascript - 如何在其他人向下滑动时删除一个类

swift - 在swift中使用类类型变量作为函数参数

javascript - 循环访问对象内的多个值

javascript - JS 中处理 Object 的嵌套属性