Фильтрация результатов с использованием Angular HttpClient - PullRequest
0 голосов
/ 24 апреля 2018

Я использую Angular5 с HttpClient.Я создал службу для извлечения данных из URL-адреса JSON API.

Это прекрасно работает.

Но теперь я хочу ограничить результаты одним критерием (spot.lat должен быть> minlat и

Я пытаюсь использовать map и forEach (см. ниже часть кода между ?????), но это не работает.Как я могу это исправить?

...
import { HttpClient } from '@angular/common/http';
export interface Spot {
    lat: number,
    lng: number,
    spotname: sring
}
tempspots: <Spot[]>

@Injectable()
export class SpotService {
   private spoturl = '<JSON SERVICE URL>';
   constructor(
      private http: HttpClient,
      ...
   ) {}
   onGetAllSpots(minlat : number, maxlat : number) : Observable<Spot[]> {
      return this.http
      .get<Spot[]>(this.spoturl)
// ?????
      .map(spots => {
          spots.forEach(spot => {
             if (spot.lat > minlat && spot.lat < maxlat) {
                this.tempspots.push(spot);
             }
          })
          return this.tempspots;
      })
// ?????
   }
}

1 Ответ

0 голосов
/ 24 апреля 2018

измени свой код на это, оно должно работать

.map(spots => {
          const tempspots: <Spot[]> = [];
          spots.forEach(spot => {
             if (spot.lat > minlat && spot.lat < maxlat) {
                tempspots.push(spot);
             }
          })
          return tempspots;
      })

Другой способ - использовать фильтр

.map(spots => {
              return spots.filter(spot => { 
                  return spot.lat > minlat && spot.lat < maxlat;
              })
          })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...