Разбор JSON в RxJS - PullRequest
       2

Разбор JSON в RxJS

0 голосов
/ 26 января 2019

Итак, я очень плохо знаком с Angular и RxJS, и я в основном из VueJS. В настоящее время у меня возникают трудности с пониманием того, как на самом деле работает RxJS, и я был бы признателен за более опытный вклад в мое текущее затруднительное положение.

Что я пытаюсь сделать: Поэтому я использую API Номик (см. Ссылку ниже), чтобы получить некоторые данные, которые возвращаются в виде массива объектов. Теперь я полностью понимаю, как просто отобразить все эти объекты на моем компоненте. Но что, если я хочу выбрать один конкретный объект на основе одного из его свойств. Например, «проходите через каждый объект в массиве, пока я не столкнусь с объектом object.Currency == 'BTC'". Все, что я сейчас работаю, - это извлечение всех данных, которые я могу отобразить. Как бы я далее изолировать данные на основе какого-либо состояния одного из объектов?

API Ссылка: http://docs.nomics.com/#operation/getDashboard

Мой код:

getDashboard() {
return this.http.get(`${this.apiUrl}/dashboard?key=${this.apiKey}`).pipe(
  map(result => {
    console.log(result);
    // Do stuff here to isolate return obj to obj with specific property in Object.Currency
    // For example, keep going through objects until currentObject.Currency== 'Some string'
  })
)

}

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Вам потребуется применить фильтр к вашему ответу, например так:

  getDashboard() {
    return this.http.get(`${this.apiUrl}/dashboard?key=${this.apiKey}`).pipe(
      map(result => result.pipe(filter(currentObject => currentObject.Currency == 'Some string')))
    )
  }

Но я рекомендую вам выполнить эту фильтрацию в вашем компоненте, где вы собираетесь получить возвращенный ответ, а не всервис, где вы делаете вызов API.

0 голосов
/ 26 января 2019

Вы можете использовать оператор массива filter ()

если это массив объектов

 this.http.get(`${this.apiUrl}/dashboard?key=${this.apiKey}`).pipe(
      tap(console.log),
      map(arr=>arr.filter(obj => obj.Currency && obj.Currency == 'BTC' ))
    )

или

 this.http.get(`${this.apiUrl}/dashboard?key=${this.apiKey}`).pipe(
      tap(console.log),
      switchMap(arr=>from(arr)),
      filter(obj => obj.Currency && obj.Currency == 'BTC' ),
      toArray()
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...