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