【发布时间】:2018-07-06 18:56:33
【问题描述】:
我有一个 json 文件,其中列出了大约 3000 个对象。每个物体都是一个机场。我想创建一个功能,用户可以通过输入名称过滤出单个机场。
这是我想出来的
<input (keyup)="searchAirport(searchquery)" [(ngModel)]="searchquery" id="searchAirport"/>
<span>{{searchedAirport}}</span>
组件
searchedAirport: string;
this.http.request('/assets/resources/airportsraw.json')
.map(res => res.json())
.subscribe(data => {
this.airportsArray = data;
});
searchAirport(value) {
for (const i of this.airportsArray) {
if (value === i.name ) {
this.searchedAirport = i.name;
}
}
}
这确实返回了正确的机场名称,但它有两个缺点。它仅在您使用大写字母搜索时才有效。所以barcelona 不会返回任何东西,但Barcelona 会。
第二个缺点是只有当值完全等于机场名称时才会返回。
如何根据部分搜索返回值?所以Bar 而不是Barcelona,我该如何解决资金问题?
【问题讨论】:
-
如果有多个以 Bar 开头的匹配项怎么办?
-
那么它应该返回所有包含
Bar的结果。因此,用户只需键入即可获得更具体的结果。 -
@Caramiriel:虽然有一些重叠,但我不会称之为重复。如果没有别的,这增加了过滤列表的整个问题。
标签: javascript angular