Javascript 获取具有不同值的对象
我想从两个给定的对象A和B生成一个对象,其中B的值与A不同。我们可以假设A和B中都存在所有字段 示例:给定以下两个对象: A B 由于昵称和位置已更改,我希望结果是:Javascript 获取具有不同值的对象,javascript,object,diff,Javascript,Object,Diff,我想从两个给定的对象A和B生成一个对象,其中B的值与A不同。我们可以假设A和B中都存在所有字段 示例:给定以下两个对象: A B 由于昵称和位置已更改,我希望结果是: { "nickname": "John-Boy", "location": { "latitude": 1.0, "longitude": 2.0 } } 请注意,我需要完整的位置对象,而不仅仅是更改的经度 实现这一目标的好方法是什么? var数组1={ “名字”:“约翰”
{
"nickname": "John-Boy",
"location": {
"latitude": 1.0,
"longitude": 2.0
}
}
请注意,我需要完整的位置
对象,而不仅仅是更改的经度
实现这一目标的好方法是什么?
var数组1={
“名字”:“约翰”,
“姓氏”:“能源部”,
“昵称”:“约翰尼”,
“地点”:{
“纬度”:1.0,
“经度”:1.0
},
“电子邮件”:“约翰。doe@company.com"
}
变量array2={
“名字”:“约翰”,
“姓氏”:“能源部”,
“昵称”:“约翰男孩”,
“地点”:{
“纬度”:1.0,
“经度”:2.0
},
“电子邮件”:“约翰。doe@company.com"
}
var-currentString;
var resultObject={};
函数loopOverObject(sourceObj、targetObj、innerObjName){
for(sourceObj中的var键){
currentString=null;
if(sourceObj.hasOwnProperty(键)){
if(源对象的类型[键]=“对象”){
loopOverObject(sourceObj[key],targetObj,key);
打破
}
否则{
if(sourceObj[key]!==targetObj[key]){
if(innerObjName){
if(resultObject[innerObjName]){
resultObject[innerObjName][key]=sourceObj[key];
}
否则{
resultObject[innerObjName]=JSON.parse('{'+key+':'+sourceObj[key]+'}');
}
}
否则{
currentString=sourceObj[key];
}
}
}
如果(当前字符串){
resultObject[key]=currentString;
}
}
}
返回结果对象;
};
var结果=loopOverObject(array2,array1);
var resultDiv=document.getElementById(“结果”)
resultDiv.innerHTML=JSON.stringify(结果)代码>
您可以使用差分模块,如获取差分列表并使用它们适当地构建新对象:
var diff = odiff(A,B)
var result= {}
for(var n=0; n<diff.length; n++) {
var key = diff.path[0] // the top-level key
result[key] = B[key]
}
var diff=odiff(A,B)
var result={}
对于(var n=0;nSee:和。请在发布之前搜索该网站。1.我搜索了。大约15分钟。2.请在得出结论之前阅读我的问题。我不想要差异。我想要B的子集。本质上是B减去a和B的共同值。也许我需要进一步澄清它?
{
"nickname": "John-Boy",
"location": {
"latitude": 1.0,
"longitude": 2.0
}
}
var diff = odiff(A,B)
var result= {}
for(var n=0; n<diff.length; n++) {
var key = diff.path[0] // the top-level key
result[key] = B[key]
}