首页 > 解决方案 > 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);
    }

标签: javascriptreactjs

解决方案


您可以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);
});

推荐阅读