在角度应用程序中过滤后重置javascript数组
我有一个有角度的应用程序,显示了一个名字列表。我有一个搜索输入来过滤那个列表在角度应用程序中过滤后重置javascript数组,javascript,angular,Javascript,Angular,我有一个有角度的应用程序,显示了一个名字列表。我有一个搜索输入来过滤那个列表 <input [ngModel]="searchStr" (ngModelChange)="modelChange($event)" type="text" id="employeeName"> HTML模板 <div *ngFor="let employee Of employeeList> e
<input [ngModel]="searchStr" (ngModelChange)="modelChange($event)" type="text" id="employeeName">
HTML模板
<div *ngFor="let employee Of employeeList>
employee.name
</div>
您正在modelChange中覆盖相同的数组,因此如果您想恢复到原始数组(在某些情况下),您必须在某个地方保留原始数组的引用,或者根本不覆盖原始数组。为显示目的维护另一个数组,假设您将其命名为displayArr
您的代码将按如下方式更新
公共显示arr:any[]=[]
modelChange(str:string):void{
调试器;
this.searchStr=str;
//如果提供了某些搜索字符串,则过滤原始数组
如果(str)
{
this.displayArr=this.employeeList.filter(emp=>emp.name.includes(this.searchStr));
}
else//如果未提供搜索字符串,则不过滤数组并按原样返回。
{
this.displayArr=this.employeeList;
}
}
您正在modelChange中覆盖相同的数组,因此如果您想恢复到原始数组(在某些情况下),必须在某个地方保留原始数组的引用,或者根本不覆盖原始数组。为显示目的维护另一个数组,假设您将其命名为displayArr
您的代码将按如下方式更新
公共显示arr:any[]=[]
modelChange(str:string):void{
调试器;
this.searchStr=str;
//如果提供了某些搜索字符串,则过滤原始数组
如果(str)
{
this.displayArr=this.employeeList.filter(emp=>emp.name.includes(this.searchStr));
}
else//如果未提供搜索字符串,则不过滤数组并按原样返回。
{
this.displayArr=this.employeeList;
}
}
您应该将数组保存在中间变量中,如下所示:
const filtered = [];
const unfiltered = [v1, v2, v3];
最初将值从未过滤的
复制到已过滤的
。过滤后,将未过滤的
过滤值复制到已过滤的
,然后在需要时还原您应该将数组保存在中间变量中,如下所示:
const filtered = [];
const unfiltered = [v1, v2, v3];
最初将值从未过滤的
复制到已过滤的
。过滤后,将未过滤的
过滤值复制到已过滤的
,然后在需要时还原谢谢您的帮助!谢谢你的帮助!