Array.prototype.filterを使用して、オブジェクト名配列からファーストネームを検索しています。私は名字を検索するために検索を変更し、そこにない場合は名字を検索したいと考えています。タイプArrayオブジェクト内の複数のプロパティを検索するスクリプト
student_name : any = [{name:"Udhay" , lname:"Ravi"},
{name:"Sabari" , lname:"Raj"},
{name:"Sachin" , lname:"Karthi"},
{name:"Sudha" , lname:"Mohan"}]
search(){
var this.myInput = "Ravi"
this.student_name = this.student_name.filter((sn) => {
return(sn.name.toLowerCase().indexOf(this.myInput.toLowerCase())> -1)
})
}
誰か助けてもらえますか?
search() {
this.myInput = "Ravi";
// Convert it to lower case here to avoid lower case conversion twice inside filter.
let searchFilter = this.myInput.toLowerCase();
this.student_name =
this.student_name.filter(sn =>
sn.name.toLowerCase() === searchFilter ||
sn.lname.toLowerCase() === searchFilter);
}
filter
機能します:私は、これは、それは次のようになります簡単にlodash
search(){
this.myInput = "Ravi"
this.result= _.filter(this.student_name, {'name':this.myInput});
if(_.isEmpty(this.result)){
this.result=_.filter(this.student_name, {'lname':this.myInput})
}
}
感謝あなたはmsmolcic。私が解決策を見ている問題は、正確なマッチであり、適切なマッチではないということです。私は検索バーにロジックを実装したい。 – Udhay
@Udhayあなたの例では、正確な一致を検索していたので、私はこの例を挙げました。入力文字列に名前または姓が '〜で始まるか '含まれているかどうかをチェックする場合は、フィルタ条件を変更するのは簡単です。答えの 'edit'部分をチェックし、必要に応じてフィルターの内部の条件を変更してください。 – msmolcic