通过匹配另一个对象的键值来更新一个对象的属性值?

时间:2013-05-30 20:49:27

标签: javascript

对象1:

var obj1 = {
  location : 'lol',
  radius : '22'
}

对象2:

var obj2 = {
  location : 'omg',
  spice : 'gravey',
  radius : '8'
}

我需要一个递归函数来更新obj1obj2匹配的属性值:

obj1 = update(obj1,obj2);

//console.log(obj1);
//{
//  location : 'omg',
//  radius : '8'
//}

仅限原生JavaScript。

2 个答案:

答案 0 :(得分:1)

这很简单。只需循环遍历第一个对象,并使用第二个对象中的值(如果存在)。

function update(obj1, obj2){
    var ret = {};
    for(var prop in obj1){
        ret[prop] = obj2[prop] || obj1[prop];
    }
    return ret;
}

答案 1 :(得分:1)

怎么样

function update(o1, o2){
    var temp = {};
    for(var key in o1){
        if (o1.hasOwnProperty(key)){
            temp[key] = o1[key];
            if (o2.hasOwnProperty(key)){
                temp[key] = o2[key];
            }
        }
    }
    return temp;
}