gpt4 book ai didi

javascript - 比较两个对象的键并构造具有相同键的第三个对象以反射(reflect)差异

转载 作者:行者123 更新时间:2023-11-28 06:11:34 24 4
gpt4 key购买 nike

我正在尝试比较两个对象,如果一个对象的属性中存储的值与另一个对象不同,则构造第三个对象。如果不是,我将存储一个空字符串。在我看来,我这样做的方式是非常低效且不可持续的。如果按键发生变化或按键数量增加,这将不起作用。我必须能够使用纯 JS 以编程方式执行此操作,无需使用 jQuery:

var staleProfile = {
firstName: 'john',
lastName: 'smith',
email: 'js@gmail.com'
}

var CurrentCustomer = {};

CurrentCustomer.profile = {
firstName: 'paul',
lastName: 'smith',
email: 'js@yahoo.com'
}

var returnObj = {};

returnObj.firstName = staleProfile.firstName != CurrentCustomer.profile.firstName ? CurrentCustomer.profile.firstName : ''
returnObj.lastName = staleProfile.lastName != CurrentCustomer.profile.lastName ? CurrentCustomer.profile.lastName : ''
returnObj.email = staleProfile.email != CurrentCustomer.profile.email ? CurrentCustomer.profile.email : ''

最佳答案

这将搜索 CurrentCustomer.profile 中的所有对象键,并检查与 staleProfile 的差异。它将键添加到差异中,这些键仅存在于 object1 中,但不存在于 object0 中,但不处理从 object0 中删除的键>到对象1

var staleProfile = {
firstName: 'john',
lastName: 'smith',
email: 'js@gmail.com',
key0: 'value0'
}

var CurrentCustomer = {};

CurrentCustomer.profile = {
firstName: 'paul',
lastName: 'smith',
email: 'js@yahoo.com',
key1: 'value1'
}

function createDiffObject(object0, object1) {
var diff = {};
Object.keys(object1).forEach(function(key) {
if (!object0.hasOwnProperty(key) || object0[key] != object1[key]) {
diff[key] = object1[key];
} else {
diff[key] = '';
}
});
return diff;
}

console.log(createDiffObject(staleProfile, CurrentCustomer.profile));
// output:
/*
{ firstName: 'paul',
lastName: '',
email: 'js@yahoo.com',
key1: 'value1' }
*/

关于javascript - 比较两个对象的键并构造具有相同键的第三个对象以反射(reflect)差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36336990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com