React-Native: Check if string contains string

Refresh

November 2018

Views

6.1k time

2

My goal is it to create a search ListView with JSON Data. This is working but I have a tiny problem with the search function. When I type in a word, it has to be exactly the same word, which is in the Array of the ListView. The main problem is that I have to type in the correct word. For example: when the word stackoverflow is one item of the Array, I have to type in stackoverflow to find this item. But I want to get the Item also when I type in stack or flow or stacko for example.

This is my code:

    filterDatasource(event)
  {
      var searchString = event.nativeEvent.text.toLowerCase();
      if (searchString != "")
      {

          var content = this.state.loadedContent;
          var searchResultsArray = [];

          for (var i = 0; i < content.length; i++) {


            var detailArray = content[i];
            const gattung = detailArray.Gattung;
            const zugnummer = detailArray.Zugummer;
            const ab = detailArray.ab;
            const bis = detailArray.bis;
            const wochentag = detailArray.Wochentag;
            const zeitraum = detailArray.Zeitraum;


            if (searchString.contains(ab.toLowerCase())) //searchString.indexOf(ab) >= 0
            {

                //alert('gefunden');
                searchResultsArray.push(detailArray);
                this.setState({ dataSource: ds.cloneWithRows(searchResultsArray) });

            }


          }

      }
      else {

        this.setState({ dataSource: ds.cloneWithRows(this.state.loadedContent) });

      }
  },

1 answers

3

Вы можете сделать это с IndexOf, как это:

if (searchString.indexOf(ab.toLowerCase()) > -1)
{ 
     ...
}