首页 > 解决方案 > 如何在 react-native 中对多个项目设置通用搜索

问题描述

我正在使用搜索功能,我从LeaveType搜索休假,它工作正常,但我也想搜索状态,该项目包含状态。搜索功能如何在LeaveTypeStatus上工作。我尝试过的:

const itemData = item.LeaveType ? item.LeaveType.toUpperCase() : ''.toUpperCase() || item.Status ? item.Status.toUpperCase() : ''.toUpperCase();

我正在使用这个功能

SearchFilterFunction(value) {
    const newData = this.state.display.filter(function(item) {
        const itemData = item.LeaveType ? item.LeaveType.toUpperCase() : ''.toUpperCase();
      const textData = value.toUpperCase();
      return itemData.indexOf(textData) > -1;
    });
    this.setState({
      response: newData,
      value: value,
    });
  }

谁能知道我做错了什么或这里缺少什么?

标签: react-native

解决方案


这段代码对我有用

 SearchFilterFunction(value) {
    const newData = this.state.display.filter(function(item) {
      //const itemData = item.LeaveType || item.Status ? item.LeaveType.toUpperCase() || item.Status.toUpperCase() : ''.toUpperCase() || ''.toUpperCase();
        const leavetypeData = item.LeaveType ? item.LeaveType.toUpperCase() : ''.toUpperCase();
        const statusData = item.Status ? item.Status.toUpperCase() : ''.toUpperCase();
        const stData = item.StartDate ? (moment(item.StartDate).format("dd MMM yyyy")) : '';
        const edData = item.EndDate ?  (moment(item.EndDate).format("dd MMM yyyy")) : '';
        const reasonData = item.Reason ?  (item.Reason).toUpperCase() : '';
      const textData = value.toUpperCase();
      return (leavetypeData.indexOf(textData) > -1 ||  statusData.indexOf(textData) > -1 || stData.toUpperCase().indexOf(textData) > -1 
      ||  edData.toUpperCase().indexOf(textData) > -1 ||  reasonData.indexOf(textData) > -1);
    });
    this.setState({
      response: newData,
      value: value,
    });
  }

推荐阅读