如何解决'keypress' 上的 Object.values 过滤器
因为我正在使用这种技术从 SWAPI 获取虚拟数据。
const httpStarwars$ = createHttpObservables('https://swapi.dev/api/films/');
fromEvent<any>(this.sTxt.nativeElement,'keypress').pipe(
map(event => event.target.value),debounceTime(400),distinctUntilChanged(),switchMap(val => httpStarwars$.pipe(
map(res => Object.values(res["results"]))
))
).subscribe(courses => console.log(courses));
这是按键后的预期结果。
0: {title: "A New Hope",episode_id: 4,opening_crawl: "It is a period of civil war.
↵Rebel spaceships,st…er
↵people and restore
↵freedom to the galaxy....",director: "George Lucas",producer: "Gary Kurtz,Rick McCallum",…}
1: {title: "The Empire Strikes Back",episode_id: 5,opening_crawl: "It is a dark time for the
↵Rebellion. Although the… remote probes into
↵the far reaches of space....",director: "Irvin Kershner",…}
2: {title: "Return of the Jedi",episode_id: 6,opening_crawl: "Luke Skywalker has returned to
↵his home planet of…
↵struggling to restore freedom
↵to the galaxy...",director: "Richard Marquand",producer: "Howard G. Kazanjian,George Lucas,…}
3: {title: "The Phantom Menace",episode_id: 1,opening_crawl: "Turmoil has engulfed the
↵Galactic Republic. The t…ustice in the
↵galaxy,to settle the conflict....",producer: "Rick McCallum",…}
4: {title: "Attack of the Clones",episode_id: 2,opening_crawl: "There is unrest in the Galactic
↵Senate. Several t…THE REPUBLIC
↵to assist the overwhelmed
↵Jedi....",…}
5: {title: "Revenge of the Sith",episode_id: 3,opening_crawl: "War! The Republic is crumbling
↵under attacks by t…ate mission to rescue the
↵captive Chancel
现在我想使用过滤器过滤上述数据的结果。
map(res => Object.values(res["results"]))
我将过滤的是 title
。到目前为止,我使用的是下面的这种技术。
map(res => Object.values(res["results"]).filter(j => j["title"] == res))
它给了我这样的空数组 []
。
更新 1:
解决方法
更新 1
我编辑了我的答案以使用 Typescript。
我认为您想要做的只是按标题过滤您的回复,因此您可以这样做:
interface Movie {
title: string;
episode_id: number;
}
const res = {};
res["results"] = {
0: {title: "A New Hope",episode_id: 4},1: {title: "The Empire Strikes Back",episode_id: 5 },2: {title: "Return of the Jedi",episode_id: 6},3: {title: "The Phantom Menace",episode_id: 1},4: {title: "Attack of the Clones",episode_id: 2}
}
const result = Object.values(res["results"]).filter((movie: Movie) => movie.title === "A New Hope")
console.log(result)
记得先验证 res["results"] 是否包含带有电影的对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。