合并Javascript对象[重复]

问题描述 投票:0回答:3

我的 object1 的键名称未知,我需要与其他 object2 合并。 安全点是 object2 中不存在未知密钥,因此永远不会出现密钥名称冲突。

var object1 = {
 id: 1,
 name: "myname",
 boleanSample : true
}


var object2 = {
 unknownKeyName : "UnknownValue"
}

我想将object2合并到object1中并得到这个

var object1 = {
 id: 1,
 name: "myname",
 boleanSample : true,
 unknownKeyName = "UnknownValue"
}

请仅使用普通 JavaScript。 如果响应需要创建一个新的对象3,那完全没问题:)

PD:我在发布问题之前检查了这些链接:

这些完全没有重复:)

javascript hash merge concatenation javascript-objects
3个回答
2
投票

Object.keys
Array#forEach

一起使用

var object1 = {
  id: 1,
  name: "myname",
  boleanSample: true,
};

var object2 = {
  unknownKeyName: "UnknownValue" //correct typo here
};
Object.keys(object2).forEach(function(key) {
  object1[key] = object2[key];
});
console.log(object1);


0
投票

这个合并函数应该可以做到。只需记住先添加要附加两个的对象即可。

var object1 = {
 id: 1,
 name: "myname",
 boleanSample : true
}


var object2 = {
 unknownKeyName : "UnknownValue"
}

function mergeObjects(a,b){
  for(var bi in b) {
    if(b.hasOwnProperty(bi)) {
      if(typeof a[bi] === "undefined") {
        a[bi] = b[bi];
      }
    }
  }
}
mergeObjects(object1,object2);
console.log(object1);


0
投票

第一步:循环属性。

第二步:尝试检查是否有对象

第三步:如果为真,则刺激 obj[prop] 上的函数并检查,否则 只是检查一下。

第四步:如果有错误 obj[prop] = check;

第五步:返回obj

/*functions*/
function objectConcat(o1, o2) {
  for (var v in o2) {
    try {
      o1[v] = (o2[v].constructor == Object) ? objectConcat(o1[v], o2[v]) : o2[v];
    } catch (e) {
      o1[v] = o2[v];
    }
  }
  return o1;
}

/*objects*/
var object1 = {
  id: 1,
  name: "myname",
  boleanSample: true,
}

var object2 = {
  unknownKeyName: "UnknownValue" /*mistake straighten*/
}

/*code*/

console.log(objectConcat(object2, object1));

© www.soinside.com 2019 - 2024. All rights reserved.