我正在使用下面的代码尝试将包含许多列的数组转换为包含2列的数组。
我可以看到当我快速观察res包含一个名为result的数组时,但我没有映射到新数组。
loadData() {
this.selectprojectfromfavoritesService.getFavorites()
.subscribe(res => {
//this.TempArray.push({ label: res.result.projectNumber, value: res.result.tzeroprojectCaptureId })
const TempArray = res.result.map(result => { return { label: result.projectNumber, value: result.tzeroprojectCaptureId }; });
this.values = this.TempArray ;
});
答案 0 :(得分:1)
在访问TempArray
值时,您犯了一个错误。它是块作用域变量(没有类属性),因此您不应使用this
关键字。这是工作示例:
loadData() {
this.selectprojectfromfavoritesService.getFavorites()
.subscribe(res => {
const TempArray = res.result.map(result => { return { label: result.projectNumber, value: result.tzeroprojectCaptureId }; });
this.values = TempArray;
});
}
BTW:如果您使用RxJS map
运算符来实现这一点,那就更好了(关于数据流管理和优化):
loadData() {
this.selectprojectfromfavoritesService.getFavorites()
.map(res => {
return res.result.map(result => {
return { label: result.projectNumber, value: result.tzeroprojectCaptureId };
})
})
.subscribe(data => this.values = data)
}