2015-05-12 95 views
1

如果我有对象data1和data2,我怎样才能让data3?如何合并两个JavaScript对象litterals

我将稍后在调用MVC服务器控制器的AJAX请求中发送data3作为参数。 (只是说我不能让data3成为我认为的数组)。

var data1 = { 
    managementPointId: 1, 
    businessUnitId: 2 
}; 

var data2 = { 
    computerPackageId: 3 
}; 

var data3 = { 
    managementPointId: 1, 
    businessUnitId: 2, 
    computerPackageId: 3 
}; 
+0

DATA3 = [Object.assign](https://开头developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)({},data1,data2); – tsh

回答

5

使用$.extend方法:

var data1 = { 
 
    managementPointId: 1, 
 
    businessUnitId: 2 
 
}; 
 

 
var data2 = { 
 
    computerPackageId: 3 
 
}; 
 

 
var data3 = $.extend({}, data1, data2); 
 

 
document.write('<pre>' + JSON.stringify(data3, null, 4) + '</pre>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

很好用。很简单。我几个月前没有问过这个问题:)谢谢。 (我会在10分钟内接受) – radbyx

1

如果你有兴趣在普通的JavaScript做,

简单地声明像

VAR OBJ 3 =一个变种yourFunction中(OBJ1,OBJ2,OBJ3);

并在你的函数中编写一个嵌套的for循环,它为参数循环并循环遍历所提供的objs中的所有道具并返回obj。

试试吧。 照顾有关空支票和其他角情况下,像检查对象等等,使用普通的JavaScript

1

function extend(a, b){ 
 
    for(var key in b) 
 
     if(b.hasOwnProperty(key)) 
 
      a[key] = b[key]; 
 
    return a; 
 
} 
 

 

 
var data1 = { 
 
    managementPointId: 1, 
 
    businessUnitId: 2 
 
}; 
 

 
var data2 = { 
 
    computerPackageId: 3 
 
}; 
 
var data3 = extend(data1, data2); 
 

 

 
document.write('<pre>' + JSON.stringify(data3, null, 4) + '</pre>');