首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular 2+ http get() JSON-data。无法.filter数据

Angular 2+ http get() JSON-data。无法.filter数据
EN

Stack Overflow用户
提问于 2017-07-28 04:27:38
回答 2查看 874关注 0票数 1

我有一个service.ts,其中我使用get()方法(http)从本地JSON文件获取数据。它工作得很好。

代码语言:javascript
复制
getMusic() {
  return this.http.get('assets/music.json')
.map((res:Response) => res.json())

在我的课堂上,我有我的“疑惑”:

代码语言:javascript
复制
ngOnInit() {this.musicService.getMusic().subscribe(
data => { this.music = data.music}
  );
}

我的JSON文件如下所示:

代码语言:javascript
复制
{
"music" : [
    { 
        "no": 11, 
        "name": "Music 1",
    },   ...... aso....

一切都是完美的。现在我正在尝试过滤我的数据,所以它只显示no=11的音乐。

我有这个导入:

代码语言:javascript
复制
//import 'rxjs/add/operator/map';
//import 'rxjs/add/operator/filter';
import 'rxjs/Rx';

我试过几种方法。包括过滤数字而不是字符串,使用==而不是===,将.filter放入内部或外部.map aso。当我尝试这样做时,我根本没有收到任何结果。我没有得到错误,只是没有结果:

代码语言:javascript
复制
getMusic() {
    return this.http.get('assets/music.json')
    .map((res:Response) => res.json())
    .map(x => x.filter(y => y.name === 'Music 1'));
}
EN

回答 2

Stack Overflow用户

发布于 2017-07-28 04:32:28

您的filter运算符函数错误。它应该在music上进行过滤。

代码语言:javascript
复制
getMusic() {
    return this.http.get('assets/music.json')
    .map((res:Response) => res.json())
    //filter on `music` object instead of `x` directly
    .map(x => x.music.filter(y => y.name === 'Music 1'));
}
票数 1
EN

Stack Overflow用户

发布于 2017-07-28 04:43:25

filter函数应用于数组,而不是数组的实例尝试使用

代码语言:javascript
复制
this.filteredArr = this.music.filter(x=>x.name == 'music 1'); //some condition
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45360433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档