Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    eliminare 1 elemento da 1 array in base al nome

    Ciao a tutti.
    Sto cercando un modo per rimuovere un elemento da un array non in base all'indice di posizione, ma in base al nome dell'elemento stesso contenuto nell'array.

    Ho provato così:
    codice:
    Array.prototype.trovaRimuovi = function(elementoDaRimuovere) {
    	 this = this.join(",").split(elementoDaRimuovere+",").join("").split(",");
    	 return this;
    };
    ed infatti:
    se
    b = ["pippo", "pluto", "paperone", "qui", "quo", "qua"];

    applicando il metodo creato:
    b = b.trovaRimuovi("pippo");

    ottengo b=["pluto", paperone", ecc.]

    Sembrerebbe funzionare, quindi, ma ho notato che non funziona se cerco di togliere l'ultimo elemento dell'array.
    Come mai?
    E' possibile correggere la funzione in modo che vada bene per tutti gli elementi?

    Grazie 1000

  2. #2
    Ho risolto ma forse è un metodo un pò involuto...
    comunque funziona.

    Ogni altro suggerimento è, ovviamente, ben accetto

    codice:
    Array.prototype.trovaRimuovi = function(elementoDaRimuovere) {
    	if (elementoDaRimuovere == b[b.length-1]) {
    		this = this.join(",").split(","+elementoDaRimuovere).join("").split(",");
    		return this;
    	} else {
    		this = this.join(",").split(elementoDaRimuovere+",").join("").split(",");
    		return this;
    	}
    };
    In pratica ho impostato una condizione che identifica quando l'elemento da rimuovere è l'ultimo elemento dell'array.

  3. #3
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    codice:
    Array.prototype.trovaRimuovi = function(elementoDaRimuovere)
    {
    	for(var i = 0; i < this.length; i++){
    		if(this[i] == elementoDaRimuovere){
    			this.splice(i, 1);	return true;
    		}
    	}
    	return false;
    };
    b = ["pippo", "pluto", "paperone", "qui", "quo", "qua"]; 
    
    b.trovaRimuovi("qua");
    b.trovaRimuovi("paperone");
    trace(b)

  4. #4
    infatti...
    immaginavo ci fosse un metodo meno contorto del mio.

    Solo una domanda...return true e return false a cosa servono esattamente, in questo contesto? Coi return faccio sempre "casino"....
    Grazie 1000

  5. #5
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Il return lo usi per due motivi:

    1. interrompere l'esecuzione della funzione
    2. restituire un valore

    Allora quando trovi l'elemento, se questo è unico, restituisci true (come a dire "l'ho trovato"), e non fai cicli inutili. Se arrivi alla fine del for, vuol dire che l'elemento non lo hai trovato, e restituisci false. Se invece l'elemento può essere presente più volte, puoi fare così, restituendo true solo alla fine:


    codice:
    Array.prototype.trovaRimuovi = function(elementoDaRimuovere)
    {
    	var count = this.length;
    	while(count--){
    		if(this[count] == elementoDaRimuovere){
    			this.splice(count, 1);
    		}
    	}
    	return true;
    };
    b = ["pippo", "paperone", "paperone", "pluto", "paperone", "qui", "quo", "paperone", "qua"]; 
    
    b.trovaRimuovi("paperone");
    trace(b)

  6. #6
    Perfetto.
    Tutto chiaro.
    Grazie ancora.

  7. #7
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Di niente..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.