Estoy tratando de buscar datos y enviar esos datos a una lista plana. El código actual funciona sin errores, sin embargo, solo encuentra resultados con el texto exacto buscado. Estoy tratando de filtrar datos para obtener resultados siempre que el texto que estoy buscando se encuentre en cualquier parte de la cadena. Necesito ayuda con mi función handleSearch
Ejemplo. Cuando busco: "Buen libro". encuentra resultados. Si busco: "es un buen libro" no obtengo ningún resultado
Me gustaría recibir resultados para mi cadena siempre que el texto se encuentre en algún lugar de la cadena.
Ejemplo Lo que estoy esperando. Encuentre resultados si la cadena contiene: Este es un buen libro o Bueno es un libro.
// _.filter is a function I am using from Lodash // action list is the data coming from another file: ActionListService.getList() const ActionList = [ { title: 'Good Book', icon: 'good book', action: 'good book', }, { title: 'Hello World', icon: 'hello', action: 'hello action', }, ] const [isLoading, setIsLoading] = useState(false); const [query, setQuery] = useState(''); const [fullData, setFullData] = useState([]); const [data, setData] = useState([]); useEffect(() => { setIsLoading(true); ActionListService.getList() .then(results => { setData(results); setFullData(results); setIsLoading(false); }) .catch(err => { setIsLoading(false); }); }, []); const handleSearch = text => { const formattedQuery = text.toLowerCase(); const filteredData = _.filter(fullData, value => { return value.title.toLowerCase().includes(formattedQuery); }); setData(filteredData); setQuery(text); }; return ( <> <Searchbar placeholder="Search" onChangeText={queryText => handleSearch(queryText)} value={query} /> <View style={{paddingLeft: insets.left, paddingRight: insets.right}}> <FlatList data={data} numColumns={orientation.orientation ? 1 : 3} key={orientation.orientation ? 1 : 3} keyExtractor={item => item.title} renderItem={({item}) => ( <List.Item onPress={() => createAction(item.action)} // eslint-disable-next-line react-native/no-inline-styles style={{ width: orientation.orientation ? '100%' : '30%', }} title={item.title} left={() => <List.Icon icon={item.icon} />} /> )} /> </View> </> );