Merge Javascript object
本问题已经有最佳答案,请猛点这里访问。
我有一个未知的键名和object1,需要与其他object2合并。安全点是对象2中不存在未知密钥,因此永远不会出现密钥名冲突。
1 2 3 4 5 6 7 8 9 10 | var object1 = { id: 1, name:"myname", boleanSample : true } var object2 = { unknownKeyName :"UnknownValue" } |
我想把object2合并到object1中并得到这个
1 2 3 4 5 6 | var object1 = { id: 1, name:"myname", boleanSample : true, unknownKeyName ="UnknownValue" } |
拜托,只有普通的javascript。如果响应要求创建一个新的对象3是完全正确的:)
我在发布问题之前检查了这些链接:
- 合并javascript对象(使用数组…)
- 合并javascript对象(仅用于已知的键,对于本例不有用)
- 在属性上合并javascript对象(错误的post,没有意义)
对那些人一点也不重复:)
Use
Object.keys withArray#forEach
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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); |
Step I: loop over the properties.
Step II: try and check if object
Step III: if true, stimulate function on obj[prop] and check, else
just take check.Step IV: if there was an error obj[prop] = check;
Step V: return obj
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | /*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)); |
这个合并函数应该这样做。只需记住先添加要附加两个的对象。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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); |