如何在Angular中连接两个对象?

时间:2017-04-28 11:01:52

标签: json angular object

如何以角度2加入对象?

对象响应1

0:Object
1:Object
2:Object
3:Object

对象响应2

0:Object
1:Object
2:Object
3:Object

myComponent组件

resultdata :any=Array;

 fooddrinks_data_func(Defaultparams){

    return this.CitiesService.getresult(Defaultparams).subscribe(data => {                
         this.resultdata = this.resultdata.join(data.categorylistvalues);

    });  
}

我收到此错误。

  

error_handler.js:59 ORIGINAL STACKTRACE:ErrorHandler.handleError @   error_handler.js:59 next @ application_ref.js:348 schedulerFn @   async.js:93 SafeSubscriber .__ tryOrUnsub @ Subscriber.js:234         SafeSubscriber.next @ Subscriber.js:183 Subscriber._next @   Subscriber.js:125 Subscriber.next @ Subscriber.js:89 Subject.next   @ Subject.js:55 EventEmitter.emit @ async.js:79         NgZone.triggerError @ ng_zone.js:333 onHandleError @   ng_zone.js:294 webpackJsonp.1416.ZoneDelegate.handleError @   zone.js:338 webpackJsonp.1416.Zone.runTask @ zone.js:169         ZoneTask.invoke @ zone.js:420 error_handler.js:60 TypeError:   _this.resultdata.join不是函数

最终结果应该是这样的。

this.resultdata

0:Object
1:Object
2:Object
3:Object
4:Object
5:Object
6:Object
7:Object

3 个答案:

答案 0 :(得分:5)

我认为您正在寻找object.assign()

  

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



var obj1 = { a: 1 };
var obj2 = { b: 2 };

var merged = Object.assign(obj1, obj2);

console.log(merged); // { a: 1, b: 2 }




答案 1 :(得分:0)

并非所有浏览器都完全支持

Object.assign。 该代码段显示了与数组一起使用的命令。 (.join是Array的成员)。

即使resultdata被实例化为数组......

所以这里有一个例子,如果响应也是数组(它们看起来像数组),它是如何工作的

resultdata :any=[];

fooddrinks_data_func(Defaultparams){
  return this.CitiesService.getresult(Defaultparams).subscribe(data => {                
     // And here concat is better choice 
     this.resultdata = this.resultdata.concat(data.categorylistvalues);
  });  
}

答案 2 :(得分:0)

@Mike回答很有效。

var obj1 = {a:1}; var obj2 = {b:2};

var merged = Object.assign(obj1,obj2);

的console.log(合并); // {a:1,b:2}

但在Object.assign之后obj1也变得与合并

相同

的console.log(OBJ1); // {a:1,b:2}

您可以使用lodash使用一种衬垫解决方案

var obj1 = {a:1}; var obj2 = {b:2};

_。合并(obj1,obj2);

结果将是---->

{    “a”:1,    “b”:2 }

除此之外,如果您的两个对象具有相同的密钥名称,您将丢失密钥。