Javascript 比较对象中两个属性的值,如果值不同,则将标志更改为true
我有下面的对象,如果新值和旧值不同,我想布尔标记true,如果不一样,则标记false 原始对象:Javascript 比较对象中两个属性的值,如果值不同,则将标志更改为true,javascript,lodash,Javascript,Lodash,我有下面的对象,如果新值和旧值不同,我想布尔标记true,如果不一样,则标记false 原始对象: { userName: 'user@gmail.com', email: 'rakesh@gmail.com', firstName: 'Naresh', lastName: 'Kumar', oldEmail: 'kuamr@gmail.com', oldFirstName: 'Rakesh', oldLastName: 'Kumar' } 转换后: {
{
userName: 'user@gmail.com',
email: 'rakesh@gmail.com',
firstName: 'Naresh',
lastName: 'Kumar',
oldEmail: 'kuamr@gmail.com',
oldFirstName: 'Rakesh',
oldLastName: 'Kumar'
}
转换后:
{
userName: 'user@gmail.com',
email: 'rakesh@gmail.com',
firstName: 'Naresh',
lastName: 'Kumar',
isFirstNameChanged: true,
isEmailChanged: true,
isFirstNameChanged: false,
oldEmail: 'kuamr@gmail.com',
oldFirstName: 'Rakesh',
oldLastName: 'Kumar'
}
在lodash中有什么方法可以做到这一点吗?您可以使用带有键的数组来通过检查更新属性
函数更新(对象){
const capitalize=s=>s[0].toUpperCase()+s.slice(1);
forEach(k=>object['is'+capitalize(k)+'Changed']=object[k]==object['old'+capitalize(k)];
}
var对象={userName:'user@gmail.com,电邮∶rakesh@gmail.com'姓:'Naresh',姓:'Kumar',旧邮件:'kuamr@gmail.com,oldFirstName:'Rakesh',oldFirstName:'Kumar'};
更新(对象);
console.log(对象)代码>
作为控制台包装{max height:100%!important;top:0;}
要比较哪两个值?&是否要修改同一对象或创建新对象?oldemail到email、firstName到oldFirstName和lastName到OldLastName使用标志修改现有对象obj.isFirstNameChanged=obj.firstName!==对象oldFirstName
。对其他每个对象重复此操作。也许可以使用getter\setter属性。。