Splice... e array

di il
3 risposte

Splice... e array

Ciao a tutti
di nuovo problems...
ho un array dove al suo interno ci sono delle lettere (CF)
dopo aver estratto tutte le lettere che mi interessano devo eliminare quella alla seconda posizione (i=1)
ma una cosa di questo genere non funzione
array.splice(1,1);

mi da errore
Nc.splice is not a function. (In 'array.splice(1,1)', 'array.splice' is undefined

sicuro che ci sono più di 3 elementi

che mi invento sta volta

3 Risposte

  • Re: Splice... e array

    Ok; è chiaro, facendo un po di prove, che Splice elimina gli elementi di un array ben distinti tra loro, quindi su indice diversi...
    ma se io stampo array[2] mi restituisce un'unica lettera, quindi non capisco perché se faccio:

    let elimina = ["M","H","B","G","S","E"];
    elimina.splice(1,1);
    Splice funziona, ma se faccio;
    Nc.splice(1,1);

    problema: Nc = string, elimina = object
    quindi Splice lavora sugli oggetti...

    coma aggiro il problema???
  • Re: Splice... e array

    Non capisco qual'e' il tuo obbiettivo e quale il punto di partenza.

    Se devi togliere il secondo carattere da un STRINGA leggi qui:
    https://stackoverflow.com/a/11116529/874578

    Se devi farlo da un array la tua funziona va benissimo.
  • Re: Splice... e array

    Io ho un nome (es. Gianfranco) devo estrarre le consonanti per il Codice Fiscale e dato che me ne servono solo 3 estraggo le prime 4 consonanti (GNFR).
    l'algoritmo del CF prevede che per il nome vengano prese la prima la terza e la quarta; quindi devo "eliminare" quella in posizione i=1 (N)

    per adesso sono qui:
    
    	function estraiLnome()
    	{
    		let nome = jQuery("#nome").val().toUpperCase().replace(/ /g, '');// espressione regolare per rimuovere tutti gli spazi dalla stringa 																										Francesca Romana => FrancescaRomana
    		let vocali = /^[aeiou]+$/i;
    		
    		let Nv = [], Nc = [];
    		let i=0;
    		if(nome.length<3)
    			{nome = nome + "X";}
    		else{
    		for(i=0;i<nome.length;i++)
    		{
    			if (vocali.test(nome[i]))
    			{
    				Nv = Nv + nome[i];
    			}
    			else 
    				if(Nc.length<4)
    			{
    				Nc = Nc + nome[i];
    			}
    			
    		} 
    		nome = Nc;i=0;
    		while(Nc.length<3)
    			{
    				nome = Nc[i]; i++;
    			}
    
    			}
    		//Nc = Nc.substring(0,1);
    		writeLn(nome);		
    		
    		
    		
    	}
    
    quindi la var Nc = GNFR
    ho provato con splice, slice, substring e Nc.substr ma non va...


    approfitto per chiedere anche un'altra cosa:
    ho più funzioni che saranno richiamate da un unico click
    		jQuery(function()
    				{jQuery("#btn_ok").click(estraiLcogn);
    				 jQuery("#btn_ok").click(estraiLnome);}
    		);
    ma cosi facendo la seconda chiamata si blocca alla prima istruzione che incontra: let nome = jQuery("#nome").val().toUpperCase().replace(/ /g, '');

    premessa le due funzioni sono uguali se non per il fatto che per il nome devo fare quel controllo per l'eliminazione della seconda consonante.
Devi accedere o registrarti per scrivere nel forum
3 risposte