Arrays 列表筛选不正确,搜索字符串为空

Arrays 列表筛选不正确,搜索字符串为空,arrays,angularjs,typescript,lodash,Arrays,Angularjs,Typescript,Lodash,我有一个列表,我正试图根据用户键入的内容进行筛选。当用户键入时,它会搜索要检查的字符串并比较两者,如果找到字符串,它会将对象推送到数组中,然后数组会显示过滤后的对象信息。我遇到的问题是,当搜索字段为空时,需要显示原始的、未更改的对象数组。相反,我得到的是最后一次成功返回的搜索 HTML <input type="text" class="in-line filter" id="searchByName" placeholder="Enter a name" (keyup)="filterB

我有一个列表,我正试图根据用户键入的内容进行筛选。当用户键入时,它会搜索要检查的字符串并比较两者,如果找到字符串,它会将对象推送到数组中,然后数组会显示过滤后的对象信息。我遇到的问题是,当搜索字段为空时,需要显示原始的、未更改的对象数组。相反,我得到的是最后一次成功返回的搜索

HTML

<input type="text" class="in-line filter" id="searchByName" placeholder="Enter a name" (keyup)="filterByName($event.target.value)" />
<study-results-table [originalArray]="originalArray"></study-results-table>

TS

ngOnInit(){
  originalArray = new Array<any>();
  unfiltered = new Array<any>()
}

filterByName(searchString){
    this.filtered = new Array<any>();           
    _.each(this.originalArray, (result) => {
        let name = result.firstName.toLowerCase() +" " +result.lastName.toLowerCase();
        if(patientName.includes(searchString.toLowerCase())){
            this.filtered.push(result);
        }
    })

    if(searchString === ""){
        this.originalArray= this.unfiltered;
    }
    this.originalArray= this.filtered;
}
ngOnInit(){
originalArray=新数组();
未筛选=新数组()
}
filterByName(搜索字符串){
this.filtered=新数组();
_.each(this.originalArray,(result)=>{
让name=result.firstName.toLowerCase()+“”+result.lastName.toLowerCase();
if(patientName.includes(searchString.toLowerCase())){
this.filtered.push(结果);
}
})
如果(searchString==“”){
this.originalArray=this.unfilted;
}
this.originalArray=this.filtered;
}

有人能解释一下如何解决这个问题吗?

为什么不使用数组的
过滤功能?您可以将代码简化为以下内容:

filterByName(searchString){
    if(searchString.trim().length==0){
        this.originalArray = this.unfiltered;
        return;
    };
    this.originalArray = this.unfiltered.filter( (result)=>{
        let name = result.firstName.toLowerCase() +" " +result.lastName.toLowerCase();
        return (name.includes(searchString.toLowerCase()));
    });
}

我在发布问题后立即将其切换为filter,但注意到我在删除字符时遇到了另一个问题,这是因为我需要在一个不可变数组中循环,而不是像您在回答中所示的更改数组。