如何以角度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
答案 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 }
除此之外,如果您的两个对象具有相同的密钥名称,您将丢失密钥。