2012-10-05 13 views
11

Eventuali duplicati:
Remove empty elements from an array in Javascriptcome rimuovere valori nulli da un array usando jQuery

desidero rimuovere null o vuoti elementi di un array usando jquery

var clientName= new Array(); 
clientName[0] = "jack"; 
clientName[1] = ""; 
clientName[2] = "john"; 
clientName[2] = "peter"; 

Si prega di dare alcuni suggerimenti.

+4

Hai provato qualcosa? Stai chiedendo alle persone di indicarti la direzione delle istruzioni del ciclo e degli operatori di confronto? – lanzz

+0

'{}' è un elenco di definizioni di oggetti, non un elenco di definizioni di array. Quale sarebbe '[]'. –

+0

@MihaiStancu Deve essere un errore di battitura, non sarebbe un oggetto letterale valido. – kapa

risposta

-1

Prova questo:

$.each(clientname, function(key, value) { 
    if (value === 'undefined' || value === '') 
    clientname.splice(key,1); 
}); 
+0

Questo rimuoverà anche '0'. – kapa

+0

Sì @ bažmegakapa, ma l'array non sembra contenere valori numerici. Ho fatto una correzione. –

+0

Ancora peggio :). '0 == '''. E che dire di "non definito"? – kapa

-1

utilizzare il seguente codice: (! È più veloce)

var newarr=[]; 
for(var i=0; i<len(clientname);i++){ 

    if(clientname[i] !== "" && clientname[i] !== null){ 
    newarr.push(clientname[i]); 
    } 
} 
+0

Questo rimuoverà anche '0'. – kapa

+0

non sto rimuovendo .. – XMen

+0

Hai provato? '0 == ''' in Javascript. – kapa

5

Non c'è bisogno di jQuery, utilizzare pianura JavaScript:

var newArray = []; 
for (var i = 0; i < clientname.length; i++) { 
    if (clientname[i] !== "" && clientname[i] !== null) { 
     newArray.push(clientname[i]); 
    } 
} 
console.log(newArray); 

Un'altra soluzione semplice per i browser moderni (utilizzando il metodo Array filter()):

clientname.filter(function(value) { 
    return value !== "" && value !== null; 
}); 
0
  1. Creare un nuovo array vuoto.
  2. Entrare in un ciclo foreach e aggiungere elementi al nuovo array se il valore non è uguale a "".
19

Utilizzare il jquery grep funzione, sarà identificare gli elementi della matrice che passano criteri si definisce

arr = jQuery.grep(arr, function(n, i){ 
    return (n !== "" && n != null); 
}); 
+0

Che dire di '0'? – kapa

+0

Non lo puoi aggiungere ad es. ... return (n! == "" && n! = null && n! == 0) ... –

+0

+1 Molto meglio con '! =='. 'grep' è comunque una buona opzione se si usa comunque jQuery. – kapa

2

pensava che, poiché la funzione di jQuery .map() si affida a tornare qualcosa non null/non definito, puoi farla finita con qualcosa del genere:

var new_array = $.map(old_array, function (el) { 
    return el !== '' ? el : null; 
}); 

Devi ancora ch eck per la stringa vuota, ma in realtà non devi più controllare null e undefined, quindi c'è una complicazione in meno nella tua logica.

+0

Dal manuale: All'interno della funzione, "questo" si riferisce all'oggetto globale ('finestra'). Inoltre, devi sbarazzarti di "". L'idea è buona però. – kapa

+1

@ bažmegakapa ~ ah, buona cattura! Completamente dimenticato del controllo stringa vuota, d'oh. Se questo è il caso, questo si limiterà a qualsiasi altra risposta qui in ogni caso. –

+0

Ancora +1, l'idea è buona. È bene che le persone non debbano controllare "null" e "undefined", perché sembrano avere abbastanza problemi con quello, guardando le altre risposte :). – kapa