Angular 2 RXJS过滤器结果(如果包含字符串)

Angular 2 RXJS过滤器结果(如果包含字符串),angular,rxjs,indexof,Angular,Rxjs,Indexof,如何过滤结果 我调用端点,并以下一种形式接收数据: {"children":["Folder1/Data1","Folder1/Data2","Folder1/Data3","Folder1/Data4","Folder1/Value_1","Folder1/Value_2"],"path":"Folder1/Data","type":"Folder"} 我想通过仅获取包含单词Value的子项来过滤结果,例如:“Folder1/Value\u 1”和“Folder1/Value\u 2” 到目

如何过滤结果

我调用端点,并以下一种形式接收数据:

{"children":["Folder1/Data1","Folder1/Data2","Folder1/Data3","Folder1/Data4","Folder1/Value_1","Folder1/Value_2"],"path":"Folder1/Data","type":"Folder"}
我想通过仅获取包含单词Value的子项来过滤结果,例如:
“Folder1/Value\u 1”和“Folder1/Value\u 2”

到目前为止,我还有下一个问题:

我从我的组件订阅此服务

public recorders: Model[];

  getValues() {
    this._service.getValues().subscribe(
      values => { console.log(values) },
      error => this.errorMessage = <any>error
    );
  }
但是它不起作用,我的意思是订阅中的console.log根本不打印任何内容,但是如果我在“map”(extractData方法)中编写console.log,我可以打印所有结果

最后,我想获取包含字符串“Value”的“children”,因为我想对它们中的每一个进行新的http调用(通过将它们与url组合) 例如“someurl”/Value_1,但这是另一个故事


谢谢

我认为你的最后一行应该行得通。请尝试
包括
映射(数据=>数据.filter(名称=>名称.includes('Value'))
@jhhoff02它可以工作!我真傻,很好!您是否使用了
includes
indexOf
?@jhhoff02 includes,我还没有设法让它与indexOf一起工作,或者它抛出一个错误,说它不可能与数据变量的类型一起使用,或者它根本不做任何事情。那么http get从“children”返回一个值数组,但我也尝试在“extractData”中使用indexOf,但没有成功。我认为你的最后一行应该行得通。请尝试
包括
映射(数据=>数据.filter(名称=>名称.includes('Value'))
@jhhoff02它可以工作!我真傻,很好!您是否使用了
includes
indexOf
?@jhhoff02 includes,我还没有设法让它与indexOf一起工作,或者它抛出一个错误,说它不可能与数据变量的类型一起使用,或者它根本不做任何事情。那么http get从“children”返回一个值数组,但我也尝试在“extractData”中使用indexOf,但没有成功。
  getValues(): Observable<Model[]> {
    let url = "some url";
    let subString = 'Value';
    return this.http.get(url)
      .map(this.extractData)
      .filter((body) => body.includes(subString))
      .catch(this.handleError);
  }

  private extractData(res: Response, item) {
    let body = res.json().children;    
    return body;
  }


  private handleError(error: any) {
    let errMsg = error.message || 'Server error';
    console.error(errMsg); 
    return Observable.throw(errMsg);
  }
  .filter((body) => { return (body.indexOf("Value") === -1) }) or
  .map(data => data.filter(data => data.indexOf('Value') === -1))