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