Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 比较对象中两个属性的值,如果值不同,则将标志更改为true_Javascript_Lodash - Fatal编程技术网

Javascript 比较对象中两个属性的值,如果值不同,则将标志更改为true

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' } 转换后: {

我有下面的对象,如果新值和旧值不同,我想布尔标记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',

  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属性。。