我的 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:我在发布问题之前检查了这些链接:
这些完全没有重复:)
将
与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);
这个合并函数应该可以做到。只需记住先添加要附加两个的对象即可。
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);
第一步:循环属性。
第二步:尝试检查是否有对象
第三步:如果为真,则刺激 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));