gpt4 book ai didi

Angular 过滤器 Observable 数组

转载 作者:太空狗 更新时间:2023-10-29 16:51:45 25 4
gpt4 key购买 nike

我有一个 Observable 数组,我想按名称过滤/查找项目。当我尝试使用它说的过滤器选项时

enter image description here

项目服务.ts

import { Injectable } from '@angular/core';
import { Project } from "../classes/project";
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';

import { Http } from '@angular/http';


@Injectable()
export class ProjectService {

private projects: Observable<Project[]>;

constructor(private http: Http) {
this.loadFromServer();
}

getProjects(): Observable<Project[]> {
return this.projects;
}

private loadFromServer() {
this.projects = this.http.get('/api/projects').map(res => res.json());
}

getProjectByName(name: String) {
return this.projects.filter(proj => proj.name === name);
}


}

项目类

export class Project {
public name: String;
public miniDesc: String;
public description: String;
public category: String[];
public images: any[];
}

最佳答案

应该是:

getProjectByName(name: String) {
return this.projects
.map(projects => projects.filter(proj => proj.name === name));
}

你误解了过滤器运算符。用于过滤从流返回的数据的运算符。您的流返回对象数组,因此您需要 filter array 来获取所需的值。

上面的解决方案将在过滤后返回一个数组,如果你只想得到一个值,使用下面的解决方案

getProjectByName(name: String) {
return this.projects
.map(projects => {
let fl = projects.filter(proj => proj.name === name);
return (fl.length > 0) ? fl[0] : null;
});
}

关于 Angular 过滤器 Observable 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43430715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com