合并或追加不同对象中的对象数组

时间:2016-11-26 16:15:49

标签: javascript angularjs model-view-controller

我正在使用angularjs,我有$ scope.var1 = {a:10,b:20,c:30};其中我想追加另一个值,它实际上是一个对象数组,即$ scope.myobjects = [{m:10,n:30},{x:6,y:8},....] ;在追加这个值之后,我的$ scope.var1看起来应该是这样的,$ scope.var1 = {a:10,b:20,c:30,m:10,n:30,x:6,y:8}; 请问任何想法。 感谢

4 个答案:

答案 0 :(得分:0)



obj ={a:10, b:20, c:30}; 
arr=[{m:10, n:30}, {x:6, y:8}];
arr.forEach(function(a){
Object.keys(a).forEach(function(key){
obj[key]=a[key];
})
})
console.log(obj);




答案 1 :(得分:0)

您可以迭代数组并使用Object.assign

  

Object.assign() 方法用于将所有可枚举的自有属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

如果没有可用的用户代理,例如在IE上,您可以使用polyfill

var target = { a: 10, b: 20, c: 30 };
    objects = [{ m: 10, n: 30 }, { x: 6, y: 8 }];

objects.forEach(function (o) {
    Object.assign(target, o);
});

console.log(target);

答案 2 :(得分:0)

Object.assign.apply(null, [$scope.var1].concat($scope.myobjects))

答案 3 :(得分:0)

请尝试这个:



var var1 = { a: 10, b: 20, c: 30 };
    myobjects = [{ m: 10, n: 30 }, { x: 6, y: 8 }];

myobjects.forEach(function (o) {
    for (var p in o) {var1[p] = o[p]};
});

console.log(var1);




请注意,此代码只是根据源对象

添加/更新属性