Ricerca in array con regex

di il
3 risposte

Ricerca in array con regex

Sto provando ad eseguire una ricerca in alcuni campi di un array usando regex.
Sto usando la formula : const regex = new RegExp(`${search}.*`, 'i').
Se i campi sono valorizzati o con valore " ", tutto funziona, ma se i dati dell' array contengono un campo null, come potrebbe essere un record ritornato da un db, non funziona più la ricerca, vorrei capire il perchè e come risolverlo.
ecco parte del codice sviluppato con svelte e REPL:

	let search = undefined;
$: visibleUsers = search ?
		anagrafica.filter(row => {
            const regex = new RegExp(`${search}.*`, 'i')
            return  row.cognome.match(regex)  || 
							row.nome.match(regex) ||
							 row.email.match(regex) ||
							row.cod_fiscale.match(regex) ||
							row.telefono.match(regex)
        }) : anagrafica;

3 Risposte

  • Re: Ricerca in array con regex

    frankz ha scritto:


    Sto provando ad eseguire una ricerca in alcuni campi di un array usando regex.
    Innanzitutto, se possibile io definirei la Regex all'esterno del ciclo, in modo da non farlo inutilmente per ogn elemento creando istanze multiple non necessarie della Regex.

    In secondo luogo, se il campo potrebbe essere null, o undefined, questa credo sia una condizione da testare prima di applicare l'espressione regolare.
  • Re: Ricerca in array con regex

    Sulla regex all'esterno del ciclo hai pienamente ragione.
    In effetti è la stessa cosa che sto pensando di fare, purtroppo essendo autodidata, non so come fare e non ho trovato alcuna funzione in javascript per verificare se la stringa è nulla o non definita.
    Potresti darmi qualche indicazione ?
  • Re: Ricerca in array con regex

    frankz ha scritto:


    non so come fare e non ho trovato alcuna funzione in javascript per verificare se la stringa è nulla o non definita.
    Potresti darmi qualche indicazione ?
    E' sufficiente qualcosa del genere:
    
    if (variabilestringa) {
      // ...
    }
    
    Se la stringa è definita e ha lunghezza maggiore di zero, la condizione risulta verificata.
    Ovviamente, vale anche al contrario, ossia con la negazione davanti:
    
    if (!variabilestringa) {
      // ...
    }
    
    Ciao!
Devi accedere o registrarti per scrivere nel forum
3 risposte