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

    cancellare elementi vuoti da un array

    ciao a tutti. prima di disturbarvi ho fatto le ricerche nel forum ma non ho trovato niente.
    Come faccio a cancellare gli elementi vuoti da un array?

    var array = new Array("valore1","valore2","","","valore3","valore4 ")
    alert(array.length)
    alert(array)
    for (i=0; i<array.length; i++)
    {
    if (array[i] == "")
    array.pop()
    }
    alert(array.length)
    alert(array)

    il secondo alert della lunghezza mi dà come risultato 4 che è giusto, però quando vado a vedere gli elementi rimasti mi scrive "valore1,valore2,,"
    mi dite dove sbaglio?

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    pop elimina l'ultimo elemento dell'array
    prova con
    array[i] = null;

  3. #3
    Non funziona (o magari ho capito male io. )

    var array = new Array("valore1","valore2","","","valore3","valore4 ")
    alert(array.length)
    alert(array)
    for (i=0; i<array.length; i++)
    {
    if (array[i] == "")
    array[i] = null
    }
    alert(array.length)
    alert(array)

    L'array rimane uguale a quello di partenza facendo così.

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    cancellare un elemento di un vettore vuol dire mettere quell'elemento a null, perciò la soluzione era esatta :master:

    se vuoi estrarre-inserire elementi, o ti fai una funzione, o usi il metodo splice

    function Button1_onclick()
    {
    var a = [10,20,30,40];
    alert(a);//10,20,30,40
    a.splice(2,1);//elimino 30
    alert(a);//10,20,40
    a.splice(2,0,100);//inserisco 100 tra 20 e 40
    alert(a);//10,20,100,40
    }
    Pietro

  5. #5
    Originariamente inviato da pietro09
    cancellare un elemento di un vettore vuol dire mettere quell'elemento a null, perciò la soluzione era esatta :master:
    A me sembra che metta gli elementi vuoti a NULL ma che non li elimini visto che la lunghezza dell'array mi rimane uguale a quella iniziale. Probabile che debba usare splice per rimuoverli ma non riesco ad automatizzare dentro il ciclo.
    Scusate la mia incapacità.

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    var a = [20,10,20,30,40,20];
    //elimino tutti gli elementi = 20
    for(var i = a.length - 1 ; i >= 0; i--)
    {
    if(a[i] == 20) a.splice(i,1);
    }
    alert(a);
    Pietro

  7. #7
    var array = new Array("valore1","valore2","","","valore3","valore4 ")
    for (var i = array.length - 1; i >= 0; i--)
    //for (i=0; i<array.length; i++)
    {
    if (array[i] == "")
    array.splice(i,1)
    }
    alert(array.length)
    alert(array)

    Ti ringrazio molto Pietro. Dopo che mi avevi postato la funzione avevo provato a risolvere da solo
    con array.splice(i,1) ma non funzionava. Usando il ciclo for al contrario è perfetto, mentre partendo da 0 non funzionava.
    Grazie ancora.

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.