I have 2 javascript objects: obj_a and obj_b:
var obj_a = {'p1':{x:100, y:200, z:100}, 'p2':{x:100, y:100, z:300}};
var obj_b = {'p1':{x:100, y:200}, 'p2':{x:100, y:100}};
I'm trying to copy only "x and y values" of obj_b to obj_a if they're different. For example,
if obj_b = {'p1':{x:200, y:200}, 'p2':{x:300, y:400}};
,
final obj_a will be obj_a = {'p1':{x:200, y:200, z:100}, 'p2':{x:300, y:400, z:300}};
. completely ignoring the property "z" of obj_a.
So, I've written the following:
function isDifferent(a, b) {
var aProps = Object.getOwnPropertyNames(a);
var bProps = Object.getOwnPropertyNames(b);
for (var i = 0; i < bProps.length; i++) {
var propName = bProps[i];
if (a[propName] != b[propName]) {
return true;
}
}
return false;
}
for (var prop in obj_b){
if(isDifferent(obj_a[prop], obj_b[prop]){
var bProps = Object.getOwnPropertyNames(obj_b[prop]);
for (var i = 0; i < bProps.length; i++){
var propName = bProps[i];
obj_a[prop].propName = obj_b[prop].propName;
}
}
}
But there's a problem in copying using obj_a[prop].propName since I only get undefined when I console.log(obj_a[prop].propName);
. When I tried console.log(obj_a[p1].x);
, the output is the old value: "200". Can somebody enlighten me?