不能反转Javascript简单差异

不能反转Javascript简单差异,javascript,Javascript,我用uu在javascript中做了一个简单的区分。我有两个相同的对象,直到有人更改文本字段,然后是旧对象和新对象。(我正在尝试创建审核日志,以跟踪任何已更改的字段) 这是到目前为止我的代码 var o1 = $scope.historicSite, o2 = $scope.newsite; var old_value = _.omit(o1, function(v, k) { return o2[k] === v; }); console.log("old value :"

我用uu在javascript中做了一个简单的区分。我有两个相同的对象,直到有人更改文本字段,然后是旧对象和新对象。(我正在尝试创建审核日志,以跟踪任何已更改的字段)

这是到目前为止我的代码

var o1 = $scope.historicSite,
    o2 = $scope.newsite;

var old_value = _.omit(o1, function(v, k) {
    return o2[k] === v;
});

console.log("old value :", old_value);
这很好,例如,如果我只更改“站点名称”字段,我会返回

{site_name: "Old Value"}
从函数开始

我需要得到旧值(我上面得到的)和新值,这样我才能存储它们,我尝试翻转o1和o2变量,但它只返回整个对象!是否需要将其反转,以便我可以获得新值和旧值


谢谢

您可以从“diff”中获取关键点,并从新值创建对象:

比如:

const new_values = Object.keys(old_value).reduce((accumulator, key) => {
    accumulator[key] = o2[key];
    return accumulator;
}, {})

您可以从“diff”中获取关键点,并从新值创建对象:

比如:

const new_values = Object.keys(old_value).reduce((accumulator, key) => {
    accumulator[key] = o2[key];
    return accumulator;
}, {})

备选方案:
Object.keys(o1).reduce((o,k)=>Object.assign(o,o2[k]==o1[k]?{}:{[k]:{old:o1[k],'new':o2[k]}),{})
将为您提供
{site\u name:{old:“old Value”,new:“new Value”}
-不需要库:p
我尝试翻转o1和o2变量,但它只返回整个对象-在这种情况下,您做了一些错误的事情,因为在
.
中更改o1/o2只会给您提供新的值-请参见备选方案:
Object.keys(o1).reduce((o,k)=>Object.assign(o,o2[k]==o1[k]?{}:{[k]:{old:o1[k],'new:o2[k]}),{})
将为您提供
{site\u name:{old:“old Value”,new:“new Value”}
-不需要库:p
我尝试翻转o1和o2变量,但它只返回整个对象-在这种情况下,您做了一些错误的事情,因为在
\中更改o1/o2。忽略
只会为您提供新值-请参阅