2017-02-14 66 views
0

我有两个对象:Angularjs连接两个物体

obj1 = { 'id1': 1, 'name1': 'anyone1', 'birth1': 22, 'year1': 1993 }; 

obj2 = { 'id2': 1, 'name2': 'anyone', 'birth2': 22, 'year2': 1993 }; 

而且我想创建这样一个数组:

ARRAY = { 

      obj1 = { 
        'id1': 1, 'name1': 'anyone1', 'birth1': 22, 'year1': 1993     
       }, 

     obj2 = { 
        'id2': 1, 'name2': 'anyone', 'birth2': 22, 'year2': 1993 
       } 

      } 

我想这样称呼它 'ARRAY.obj1.id1'

我怎样才能做到这一点?

+1

这很混乱......你为什么要命名一个对象“ARRAY”?你是否试图故意误导其他开发者? :D – Canastro

+0

@Canastro,例如参见PHP中的关联数组。它们在那里用得很像我们在JS中使用Object literals。但我同意,名字有时很重要。 – Thomas

+0

是的在PHP中我们有关联数组,在javascript中我更喜欢称它为'map'。我非常喜欢在JavaScript中使用地图,我爱上了'normalizr'。 – Canastro

回答

2

的解决方案是创建一个新的object具有两个keys

obj1 = { 'id1': 1, 'name1': 'anyone1', 'birth1': 22, 'year1': 1993 }; 
 

 
obj2 = { 'id2': 1, 'name2': 'anyone', 'birth2': 22, 'year2': 1993 }; 
 
var obj={}; 
 
obj["obj1"]=obj1; 
 
obj["obj2"]=obj2; 
 
console.log(obj); 
 
console.log(obj.obj1.id1);

+0

真的不应该命名对象数组。 – chrispy

+0

我更新了我的答案。请删除downvote。 –

+0

@ Alexandru-IonutMihai,PERFECT !!!!! ty非常多!!!!!! – kfm

0

又如使用Object.assign

obj1 = { 'id1': 1, 'name1': 'anyone1', 'birth1': 22, 'year1': 1993 }; 
 
obj2 = { 'id2': 1, 'name2': 'anyone', 'birth2': 22, 'year2': 1993 }; 
 
var obj3 = Object.assign({}, { obj1: obj1 }, { obj2: obj2}); 
 
console.log(obj3);

0

此外,由于这是一个角度的问题,您也可以使用angular.extend功能:

var obj1 = { 'id1': 1, 'name1': 'anyone1', 'birth1': 22, 'year1': 1993 }; 
 
var obj2 = { 'id2': 1, 'name2': 'anyone', 'birth2': 22, 'year2': 1993 }; 
 
var obj3 = angular.extend({}, { obj1: obj1, obj2: obj2 }); 
 
console.log(obj3);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

0

使用

var myNamedStuff = new Map; 
myNamedStuff.set("obj1", obj1); 

什么你”重新要求是Map。我们在ES6之前使用普通对象作为地图,但是我们遇到了与名称冲突相关的各种安全风险和例外情况,特别是在Object.prototype中出现特定于供应商的属性时。 ES6引入了Map,以便我们再也不会这样做,而是保证像我们真正想要的干净名称空间。

+1

是的,好的。固定。 – sqykly