2012-07-09 8 views
8

Sto cercando il modo più efficiente di produrre empty string anziché "null" per i valori null. C'è un modo per fare questo senza dichiarazioni condizionali (ad esempio if o ternario (? :)).Non eseguire il rendering di null dal valore dell'oggetto JavaScript

Esempio di codice come segue:

$.each(data, function(index, item) { 
    return $("div#SearchResults").append(item.PhoneNumber); 
} 

quando item.PhoneNumber is null, pagina rende con una stringa "nullo" all'interno del SearchResults div, invece ho voluto essere vuoto.

+1

Perché? Perché dovresti evitare di valutare le tue variabili prima dell'output? –

+0

Ho pensato che ci sarebbe stato un modo più efficiente, cioè una sorta di funzione built-in. Sono sorpreso che non ce n'è uno né in JavaScript né in jQuery :( – Tsar

+0

Bene, l'operatore '||' ('or') lo fa, ma la variabile è ancora valutata per prima, solo senza un esplicito' if' o ternario. –

risposta

17
$.each(data, function(index, item) { 
    return $("div#SearchResults").append(item.PhoneNumber || ""); 
} 

Con $.trim (converte inaspettatamente null e undefined a stringa vuota):

$.each(data, function(index, item) { 
    return $("div#SearchResults").append($.trim(item.PhoneNumber)); 
} 

imprevisto perché è sia poco intuitivo e documentato.

+0

Upvoting perché abbiamo trovato la stessa risposta intorno allo stesso tempo e, anche, perché non capisco il down-vote –

1

Prova questo,

$.each(data, function(index, item) { 
    return $("div#SearchResults").append(item.PhoneNumber?item.PhoneNumber:""); 
} 
+2

Dalla domanda OPs * C'è un modo per farlo ** senza ** istruzioni condizionali (es. se o?:) * – ManseUK

+1

Non ho fatto down-vote, ma la domanda specifica evita il ternario operatore (così come il 'se'), anche se non è indicato dal nome, quindi è facilmente sfuggito. –

7

Se sei veramente deciso a non utilizzare un ternario if o per valutare la variabile, poi c'è la possibilità di utilizzare il || dell'operatore:

$.each(data, function(index, item) { 
    return $("div#SearchResults").append(item.PhoneNumber || ''); 
} 

Ma, onestamente, basta usare un operatore condizionale, è ciò per cui sono pensati, e aiuta a rafforzare una certa sicurezza nell'esecuzione e nell'output dello script.

+0

Al massimo mi piacerebbe un '=== null' ternarny ma non se stateme nt: P – Esailija

+0

Sono d'accordo con il tuo approccio al metodo di valutazione; ma, a prescindere, valuterò esplicitamente il valore variabile/restituito, piuttosto che basarsi sul metodo di cui sopra (anche se funziona, sembra semplicemente ... * sbagliato *, leggermente). –

0

Senza JQuery:

$.each(data, function(index, item) { 
    return $("div#SearchResults").append([item.PhoneNumber].join('')); 
} 
Problemi correlati