Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在RxJS中解析JSON_Angular_Typescript_Rxjs - Fatal编程技术网

Angular 在RxJS中解析JSON

Angular 在RxJS中解析JSON,angular,typescript,rxjs,Angular,Typescript,Rxjs,所以,我对Angular和RxJS非常陌生,我主要来自VueJS背景。我目前很难理解RxJS到底是如何工作的,如果能就我目前的困境提供一些更有经验的意见,我将不胜感激 我想做的是: 因此,我使用下面的nomics Apise链接获取一些作为对象数组返回的数据。现在,我完全理解了如何简单地在组件上显示所有这些对象。但是如果我想根据一个特定对象的属性来选择它呢。例如,遍历数组中的每个对象,直到我用object.Currency=='BTC'击中该对象。我目前所做的工作就是提取所有我可以显示的数据。如

所以,我对Angular和RxJS非常陌生,我主要来自VueJS背景。我目前很难理解RxJS到底是如何工作的,如果能就我目前的困境提供一些更有经验的意见,我将不胜感激

我想做的是: 因此,我使用下面的nomics Apise链接获取一些作为对象数组返回的数据。现在,我完全理解了如何简单地在组件上显示所有这些对象。但是如果我想根据一个特定对象的属性来选择它呢。例如,遍历数组中的每个对象,直到我用object.Currency=='BTC'击中该对象。我目前所做的工作就是提取所有我可以显示的数据。如何根据其中一个对象的某些条件进一步隔离数据

API链接:

我的代码:

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'
  })
)

}

您可以使用过滤器数组运算符

如果它是一个对象数组

 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),
      map(arr=>arr.filter(obj => obj.Currency && obj.Currency == 'BTC' ))
    )


您需要对响应应用筛选器,如下所示:

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

但是,我建议您在您要获取返回响应的组件中执行此筛选,而不是在进行API调用的服务中执行此筛选。

您需要对响应应用此筛选,如下所示:

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

但是,我建议您在要获取返回响应的组件中执行此筛选,而不是在进行API调用的服务中执行此筛选。

我收到以下错误:类型“Object”上不存在属性“currency”。在此处为返回类型声明接口是否有帮助?请尝试在http之后添加tapconsole.log运算符,并检查obj hasIt显示的属性是什么?它显示了一个包含大约657个对象的数组,以及数组响应下面的一个可观察对象。我尝试使用您提供的第二个选项,它说答案上不存在筛选器。检查obj是否具有此类属性-货币。您可以根据您登录到控制台的内容进行基本调试,我认为错误是由于您的结果数据结构造成的。是的,我进行了调试,obj肯定具有货币属性。我不知道为什么它会说我得到了以下错误:属性“currency”在类型“Object”上不存在。在此处为返回类型声明接口是否有帮助?请尝试在http之后添加tapconsole.log运算符,并检查obj hasIt显示的属性是什么?它显示了一个包含大约657个对象的数组,以及数组响应下面的一个可观察对象。我尝试使用您提供的第二个选项,它说答案上不存在筛选器。检查obj是否具有此类属性-货币。您可以根据您登录到控制台的内容进行基本调试,我认为错误是由于您的结果数据结构造成的。是的,我进行了调试,obj肯定具有货币属性。我不知道为什么会有不同的说法