【发布时间】:2018-04-14 12:38:24
【问题描述】:
您好,我正在使用 javascript/node.js。我有两个数据对象。 (请注意,真实的物体比这复杂得多。)
const original = {
'totAmount': 10,
'testVal': 'zzzzzzzz',
'potentialPaid': 10,
'depositAmount': 10,
'payment': {
'amount': 10,
'testVal': 'zzzzzzzz',
'details': {
'amount': 10,
'testVal': 'zzzzzzzz',
'statusHistory': {
'amount': 10,
'testVal': 'zzzzzzzz'
}
}
},
'coupon': {'test': 1000}
};
和
const dataToUpdate = {
'totAmount': 65,
'potentialPaid': 65,
'depositAmount': 65,
'payment': {
'amount': 65,
'details': {
'amount': 65,
'statusHistory': {
'amount': 65
}
}
},
'coupon': {}
};
我想用相同的键替换 dataToUpdate 中的 original 中的所有值。
我的预期结果是
const original = {
'totAmount': 65,
'testVal': 'zzzzzzzz',
'potentialPaid': 65,
'depositAmount': 65,
'payment': {
'amount': 65,
'testVal': 'zzzzzzzz',
'details': {
'amount': 65,
'testVal': 'zzzzzzzz',
'statusHistory': {
'amount': 65,
'testVal': 'zzzzzzzzz
}
}
},
'coupon': {}
};
- 原始对象中具有相同键的所有值都应替换为其他对象值。
我正在研究各种解决方案,例如 Object.assign() .merge in lodash 和许多其他解决方案。
我已经坚持了 3 个多小时,但我仍然找不到任何解决方案。
有没有可以做这种事情的默认javascript函数? , 请帮忙。
提前致谢。
【问题讨论】:
-
我认为您正在尝试同时合并具有两个不同条件的两个对象。我的意思是,您试图将 original.payment.testVal 保留在结果对象中,然后您想在结果对象中省略 original.coupon.test。那么,您的辅助函数(Object.assign、_.merge 等)如何知道何时要保留原始对象中的字段以及何时不保留?
-
mm 我想如果对象为空我想替换,如果对象不为空我想合并
-
我不知道有一个函数(无论是本机的还是来自库的)可以帮助您实现这一目标,因为您正在应用自定义标准。如果可以,您将需要实现自己的合并功能。
标签: javascript node.js loops object lodash