angular - RxJs 在返回的数组上循环

有没有比这更好的方法使用 RxJS 运算符来循环从 observable 返回的数组来发出新的单个 ListingItem?

onGetItemData(){
this.dataService.getItemData().subscribe((itemData) =>
{
  this.itemDataJSON = itemData;
  this.itemDataJSON.forEach(function (value) {
    let new_listing = new ListingItem(value.label,value.market,value.name);
    console.log(new_listing);
  });
 });
}

API 返回包含项目的单个数组,因此我无法使用 .map 访问 itemData.name
//-- DataService --// 
getItemData(){
 return this.http.get(this._URL, { headers })
        .pipe(map((res: Listings) => res.items))
}

最佳答案

为什么不直接输入 map()

this.dataService.getItemData()
    .pipe(
        map(itemData => {
            return itemData.map(value => {
                return new ListingItem(value.label, value.market, value.name);
            })
        })
    )
    .subscribe((listingItem) => {
        console.log(listingItem) // gives an array of listingItem
    });
请注意, .map() 是 JavaScript 的原生数组函数,您将使用它来转换数据,通过遍历数组的每个项目
仅用于单线:
.pipe(
    map(itemData => itemData.map(value => new ListingItem(value.label, value.market, value.name)))
)