将一个对象的选定属性值复制到另一个对象

黑雪

我有2个javascript对象:obj_a和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}};

我试图仅将obj_b的“ x和y值”复制到obj_a(如果它们不同)。例如,

如果obj_b = {'p1':{x:200, y:200}, 'p2':{x:300, y:400}};

最终obj_a将为obj_a = {'p1':{x:200, y:200, z:100}, 'p2':{x:300, y:400, z:300}};完全忽略obj_a的属性“ z”。

因此,我写了以下内容:

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;
        }
    }
}

但是使用obj_a [prop] .propName进行复制时会出现问题,因为我只有在I时才得到未定义console.log(obj_a[prop].propName);当我尝试时console.log(obj_a[p1].x);,输出为旧值:“ 200”。有人可以启发我吗?

杰伊

您应该使用obj_a[prop][propName]object[prop].propName与的object[prop]["propName"]含义相同,这意味着它将搜索字面名称为“ propName”的属性

因此,obj_a[p1].x将返回您期望的值,但obj_a[p1].propName由于obj_a [p1]没有属性名“ propName” ,因此该值将是未定义的。

您想要的是将“ propName”视为“字符串变量”,而不是“字符串文字”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

仅将一个对象的值复制到另一个非属性的javascript

使用Angular将对象属性(不带值)复制到另一个对象

将时间戳对象的值复制到另一个对象

将MVC模型类对象值复制到另一个对象

JS 将一个对象复制到另一个对象

将条件从一个对象复制到另一个对象

如何将一个Python对象的所有属性复制到另一个对象?

mongodb:将数组属性从一个对象复制到另一个对象

如何将一个对象的值复制到另一个对象的键中?

如何将月份值从一个Date对象复制到另一个对象?

Angular-2:将一个对象复制到另一个

angularjs-将通用属性从一个对象复制到另一个

如何将属性从一个.net对象复制到另一个

如何将字典对象值从一个键复制到另一个键?

将对象属性复制到Groovy中的另一个对象

在 React js 中,如何仅将选定的对象从数组复制到另一个数组?

为了将非null属性从对象复制到另一个对象的助手?(Java)

如何在Python中将一个对象的所有属性复制到另一个对象?

将加载的对象复制到Javascript中的另一个对象

将对象的属性复制到另一个跳过未定义的属性

将值从Ant属性文件中的属性复制到另一个属性

将一个对象复制到另一个对象在Java中产生不同的结果

在将一个对象复制到另一个对象时,如何避免if语句过多?

C ++:将一个对象复制到构造函数中的另一个对象

排除 id 字段以将一个对象复制到另一个对象中

JAVA-如何将一个对象的属性复制到另一个具有相同属性的对象?

从一个对象复制到另一个对象 - 仅来自其接口通用属性的值

使用BeanUtils或类似方法将非空属性从一个对象复制到另一个对象

如何有效地将属性从一个对象复制到另一个对象?