javascript - React 如何搜索(过滤)数组中的所有字段?
问题描述
我的搜索功能使用过滤数组中的字段。我尝试其他方法但没有成功。我可以使用一行代码来搜索(过滤)数组中的所有字段吗?
搜索代码如下:(如果我在数组中有很多字段。例如:“title”,“date”,“id”,“name”)
filterList = (e) => {
let { value } = e.target
this.setState({ value }, () => {
var updatedList = this.state.issues;
updatedList = updatedList.filter((item) => {
return item.title.toLowerCase().search(this.state.value.toLowerCase()) !== -1;
});
this.setState({ issues: updatedList });
});
}
我终于发现搜索功能应该删除分页中的一些功能,如下我注释掉的代码:
setPage(page) {
var { items, pageSize } = this.props;
var pager = this.state.pager;
//if (page < 1 || page > pager.totalPages) {
// return;
//}
pager = this.getPager(items.length, page, pageSize);
var pageOfItems = items.slice(pager.startIndex, pager.endIndex + 1);
this.setState({ pager: pager });
this.props.onChangePage(pageOfItems);
}
解决方案
您可以some
结合使用方法Object.Keys
来过滤所有字段。
var searchValue = this.state.value.toLowerCase();
updatedList = updatedList.filter((item) => {
return Object.keys(item).some(key => item[key].toString().search(searchValue) !== -1);
});
推荐阅读
- reactjs - 何时(在哪里)读取 React 路由器参数以将数据检索到道具中?
- airflow - Cloud Composer 检测容器完成运行
- reactjs - 我们如何用破折号替换 url 中的空格?
- python - 如果我将 UTC 时间加 1 小时并进行本地化,或者将本地时间加 1 小时,为什么会有所不同?
- javascript - undefined 不是函数(评估'_reactNavigation.NavigationActions.reset')
- swift - 连接hc-05与iPhone SE iOS(v11.0)
- javascript - 使用 Java Script 从用户选择值中减去时间
- android - Android 在 Recyclerview 中拖放自定义树节点
- java - 如何将 Array 对象从一个活动传递到另一个活动,而无需可序列化的附加功能?
- vba - VBA:中断双击(两次单击)