任何人都知道如何进一步压缩我的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)})
)
答案 0 :(得分:1)
您可以使用_.merge()
将路径从awk '{sum+=$1} END{print sum/FNR}' OFMT="%0.9g" Input_file
复制到obj2
。然后,您可以返回obj2
(我已使用comma operator):
obj1
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));
答案 1 :(得分:1)
不使用外部库的最简单方法
const obj1 = { z: {fields: { a: "200", b: "2", c: "66" }}}
const obj2 = { z: {fields: { a: "2", b: "20" }}}
const mergedObj = {z: {fields: {}}}
Object.assign(mergedObj.z.fields ,obj1.z.fields, obj2.z.fields)
console.log(mergedObj)
另一种方法是使用对象扩展运算符,但需要babel preset
才能使用此功能 - 这是将来的语法。 :)
该语法将类似于
const mergedObj = {
z: {
fields: {
...obj1.z.fields,
...obj2.z.fields
}
}
}