【发布时间】:2020-09-16 23:11:48
【问题描述】:
我有两个 Javascript 对象
var order1 = {
sandwich: 'tuna',
chips: true,
drink: 'soda',
order: 1,
toppings: [{VendorNumber: 18, PreferredFlag: false, SupportedFlag: true}, {VendorNumber: 19, PreferredFlag: false, SupportedFlag: true}, {VendorNumber: 20, PreferredFlag: false, SupportedFlag: true}],
details: {
name: 'Chris',
phone: '555-555-5555',
email: 'no@thankyou.com'
},
otherVal1: '1'
};
var order2 = {
sandwich: 'turkey',
chips: true,
drink: 'soda',
order: 2,
toppings: [{VendorNumber: 18, PreferredFlag: false, SupportedFlag: true}, {VendorNumber: 19, PreferredFlag: false, SupportedFlag: false}, {VendorNumber: 20, PreferredFlag: true, SupportedFlag: true}],
details: {
name: 'Jon',
phone: '(555) 555-5555',
email: 'yes@please.com'
},
otherVal1: '2'
};
我需要比较这两个对象(order1 是存在的,order2 是编辑过的数据)并将差异存储在一个名为 var order3 的新变量中。但是,如果对象内部有一个数组,例如 toppings 数组,则要与更改一起整体复制。
简而言之,结果应该是
{
details: {
email: "yes@please.com",
name: "Jon",
phone: "(555) 555-5555"
},
order: 2,
otherVal1: "2",
sandwich: "turkey",
toppings: [{
PreferredFlag: false,
SupportedFlag: true,
VendorNumber: 18
}, {
PreferredFlag: false,
SupportedFlag: false,
VendorNumber: 19
}, {
PreferredFlag: true,
SupportedFlag: true,
VendorNumber: 20
}]
}
我怎样才能做到这一点?
【问题讨论】:
-
你有两个 JavaScript 对象而不是 json 对象。我知道这是吹毛求疵,但它们是不同的东西。
-
你好,Pratyush。你的问题太宽泛了,有不止一种方法可以实现你想要的。您是否尝试过不起作用的特定算法?也许从那里开始并发布一个具有特定问题的问题。
-
{...order1,...order2} 能满足您的需求吗?
-
这能回答你的问题吗? Getting a diff of two json-objects
-
@evolutionxbox 是的,你是对的,我的错误,感谢您指出。
标签: javascript json angular typescript object