我有两个来自 API 的数据数组,示例数组如下
数组1
[
{userId: 1
description: "Student"
imagePath: "test.png"
status: 1
}]
数组2
[
{id: 85
accountName: "Rahul"
accountNumber: "11145678"
}
]
在我的 react native 应用程序 View 中,有搜索栏,用户应该能够从这两个数组中进行搜索。所以我使用
将这两个数组合并为一个this.searchArray =this.filterArray[0].concat(this.filterArray[1])
所以,我的 searchArray 是一个包含 Array1 和 Array2 数据的单个数组。示例如下
[
{userId: 1
description: "Student"
imagePath: "test.png"
status: 1
},
{id: 85
accountName: "Rahul"
accountNumber: "11145678"
}]
我的搜索功能如下(我需要从帐号或描述中搜索)
//Search Filter
searchFilter =searchText=>{
const searchTextData = searchText.toUpperCase();
const userSearch = this.searchArray.filter(item => {
const itemData = `${item.description && item.description.toUpperCase()} ${item. accountName && item.accountName.toUpperCase()}`;
return itemData.indexOf(searchTextData) > -1;
});
}
搜索功能不适用于 accountName。它没有得到任何结果。但如果我删除 ${item. accountName && item.accountName.toUpperCase()} ,然后它就可以显示带有描述的数据。但我需要从两者中过滤
最佳答案
在数组中,一个对象可以具有描述或 accountNumber,因此请检查是否存在将其包含在 itemData 变量中。
尝试这样做
searchFilter =searchText=>{
const searchTextData = searchText.toUpperCase();
const userSearch = this.searchArray.filter(item => {
const itemData = `${item.hasOwnProperty('description'))?item.description.toUpperCase():''} ${item.hasOwnProperty('accountNumber')?item.accountNumber:''}`;
return itemData.indexOf(searchTextData) > -1;
});
}
关于javascript - 合并数组搜索功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60918510/