Javascript 如何在不丢失索引的情况下筛选数组?
app.component.htmlJavascript 如何在不丢失索引的情况下筛选数组?,javascript,angular,typescript,Javascript,Angular,Typescript,app.component.html <div class="input-group"> <input type="text" #searchBox class="form-control chapter-filter" placeholder="Search chapter..." name="chapter" [(ngModel)]="searchText"
<div class="input-group">
<input type="text" #searchBox class="form-control chapter-filter" placeholder="Search chapter..." name="chapter" [(ngModel)]="searchText" />
}
问题是,当我过滤任何章节时,它工作正常,但章节索引是根据过滤的章节设置的。--> 假设我有三章
如何使其保持索引2。我的意思是它应该过滤,但不应该改变索引。这里有几个选项
章节的属性
为什么不把
章索引
作为章的属性
?如果你不想这样做,我认为你不应该使用searchFilter管道,而是在你的组件中使用过滤逻辑,使用allChapters和filteredChapters数组。但问题是我在transform(items, searchText, searchField: string) {
let filteredList = [];
if (searchText) {
return items.filter(item => {
searchText = searchText.trim().toLowerCase();
let itemName = item[searchField].trim().toLowerCase();
if (itemName.indexOf(searchText) > -1) {
filteredList.push(item);
return filteredList;
}
})
} else {
return items;
}
<li (click)="changeChapter(chapter)" *ngFor="let chapter of chapters | searchFilter">
changeChapter(chapter) {
this.chapterIndex = this.chapters.indexOf(chapter);
// and whatever ...
}
<li (click)="changeChapter(chapter)" *ngFor="let chapter of chapters | searchFilter">
{{ chapter.chapterIndex }} - {{ chapter.name }}
</li>
<li (click)="changeChapter(chapter)" *ngFor="let chapter of displayedChapters">
</li>
displayedChapters: Chapter[];
private allChapters: Chapter[];
changeChapter() {
// whatever happens here...
}