我需要能够将JSON中的对象( obj1 )与另一个对象( obj2 )合并。 obj2是obj1的子集,因此它永远不会有任何其他额外的值。
var obj1 = {
"name":"bob",
"age":99,
"occupation":"builder"
}
var obj2 = {
"name":"Joe",
"age":23,
}
当合并时,较小对象的值应该替换较大类中的值,如此。
var obj1 = {
"name":"Joe",
"age":23,
"occupation":"builder"
}
有没有人知道如何在jQuery或Javascript中执行此操作?
我尝试了 $。合并(..),但这似乎不起作用。我可以写一个for(..)循环,但必须有一个更简单的解决方案。
答案 0 :(得分:3)
使用$ .extend第二个对象替换第一个对象中的值:http://api.jquery.com/jquery.extend/
var obj1 = {
"name":"bob",
"age":99,
"occupation":"builder"
}
var obj2 = {
"name":"Joe",
"age":23,
}
jQuery.extend(obj1, obj2);
for (var j in obj1) {
alert(j + " " + obj1[j]);
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
var obj1 = {
"name":"bob",
"age":99
}
var obj2 = {
"name":"Joe",
"age":23,
"occupation":"builder"
}
if(Object.keys(obj1).length>Object.keys(obj2).length)
jQuery.extend(obj1, obj2);
else
jQuery.extend(obj2,obj1);
for (var j in obj1) {
alert(j + " " + obj1[j]);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:1)
function mergeEm(bigger, smaller) {
for (var property in smaller) {
bigger[property] = smaller[property];
}
return bigger;
}