React Native SectionList (title, data) - 在数据字段中搜索

React Native SectionList (title, data) - Search in the data field

我正在尝试在 SectionList 中构建搜索功能。我在 'data'(第二个字段)内搜索,而不是在 'title' 内搜索,但我无法使其正常工作。

我的数据是关于公寓的单位/居民详细信息 -

sectiondata =

    [{"title":"GROUND FLOOR",
      "data":[
          {"id":"48","res_type":"owner","user_name":"Ashwani","flat_id":"1","flat_name":"001","floor_no":"GROUND FLOOR","floor_int":"0","signal_player_id":"aa","user_phone":"98855550"},
          {"id":"49","res_type":"owner","user_name":"Rahul","flat_id":"2","flat_name":"002","floor_no":"GROUND FLOOR","floor_int":"0","signal_player_id":"aa","user_phone":"999999"}
        ]
    }]

我正在尝试类似的方法,但它不起作用。

searchFilterFunction = (text) => {

    let search = text.toLowerCase();
    this.setState({
        check: this.state.sectiondata.filter(
              obj => obj.data['flat_name'].toLowerCase().includes(search))
    });
}

如何根据姓名过滤数据库?请在这里提供帮助。 谢谢

您可以尝试这样搜索:

onChangeText(text) {
    if (text.trim().length > 0) {
      var temp = []
      sectiondata.map((item) => {
        var dataItem = {};

        var brandData = [];
        item.data.map((searchItem) => {
    let flatName =  searchItem.flat_name
          if (flatName.match(text)) {
            brandData.push(searchItem);
          }
        })
        if (brandData.length > 0) {

        } else {
          return null;
        }
        dataItem.brandData = brandData;
        temp.push(dataItem);
        this.setState({
          sectiondata: temp
        })
      })

    } else {
      this.setState({
        sectiondata: this.state.tempData
      })
    }
  }
searchFilterFunction(text) {

  if( text == undefined || text == '') {
    this.setState({
      sectiondata: this.arrayholder
    })
    return;
  }

  if (text.trim().length > 0) {
      var temp = []
      this.state.sectiondata.map((item) => {
            var dataItem = {};

            var title = item.title;
            var brandData = [];

            item.data.map((searchItem) => {
              let flatName =  searchItem.flat_name
                if (flatName.match(text)) {
                  brandData.push(searchItem);
                }
            })
            if (brandData.length > 0) {

            } else {
              return null;
            }
            dataItem.title = title;
            dataItem.data = brandData;
            temp.push(dataItem);
            this.setState({
              sectiondata: temp
            })
      })