将数组映射到TypeScript中的另一个数组

时间:2018-03-06 09:57:50

标签: reactive

我可以改进我的代码并用array.map替换for循环吗?

我搜索过,我想我可以这样做,但我没有找到我怎么能应用它。

这就是我found

var result = arr.map(person => ({ value: person.id, text: person.name }));

我的代码在这里:

  public getFlights(): Observable<RowItem[]> {
    return this.http
      .get(this.apiHostFlights)
      .map((res: any) => {
        return <LocationModelItem[]>res.json();
      })
      .map((items: LocationModelItem[]) => {
        var rowItems: RowItem[]=[];
        var cachedLenght = items.length;
        for (var i = 0; i < cachedLenght; i++) {
          rowItems.push(
            new RowItem(i, items[i].name, items[i].img, items[i].category)
          );
        }
        return rowItems;
      })
      .catch((error: any) => {
        return Observable.throw(error.statusText);
      });
  }

1 个答案:

答案 0 :(得分:4)

 public getFlights(): Observable<RowItem[]> {
    return this.http
      .get(this.apiHostFlights)
      .map((res: any) => {
        return <LocationModelItem[]>res.json();
      })
      .map((items: LocationModelItem[]) => {
        return items.map((item, index) => ({
           index: index,
           name: item.name,
           img: item.img,
           category: item.category)
        }))

      })
      .catch((error: any) => {
        return Observable.throw(error.statusText);
      });
  }

这应该有希望