2012-07-09 4 views
8

Ich bin auf der Suche nach dem effizientesten Weg zur Ausgabe empty string anstelle von "null" für null Werte. Gibt es eine Möglichkeit, dies zu tun ohne bedingten Anweisungen (d. H. if oder ternary (? :) Betreiber).Rendern Sie nicht Null von JavaScript-Objekt Wert

Codebeispiel wie folgt:

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

wenn item.PhoneNumber is null, die Seite mit einem String macht "null" innerhalb der SearchResults div, anstatt wollte ich leer sein.

+1

Warum? Warum sollten Sie vermeiden, Ihre Variablen vor der Ausgabe zu bewerten? –

+0

Ich dachte, es gäbe einen effizienteren Weg, d. H. Eine Art eingebaute Funktion. Ich bin überrascht, dass es weder JavaScript noch jQuery gibt :( – Tsar

+0

Nun, der '||' ('oder') Operator tut dies, aber die Variable wird immer noch zuerst ausgewertet, nur ohne ein explizites' if' oder ternäres. –

Antwort

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

Mit $.trim (unerwartet konvertiert null und undefined zu leeren String):

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

unerwartet, weil es beide nicht intuitiv und ohne Papiere ist.

+0

Upvoting, weil wir ungefähr zur gleichen Zeit die gleiche Antwort hatten und auch, weil ich das nicht verstehe down-vote. –

1

die Sie interessieren,

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

Aus der OP-Frage * Gibt es eine Möglichkeit, dies zu tun ** ohne ** bedingte Anweisungen (dh wenn oder?:) * – ManseUK

+1

Ich habe nicht abgestimmt, aber die Frage speziell die Vermeidung der ternären operator (wie auch das 'if'), obwohl es nicht namentlich genannt wird, also leicht übersehen wird –

7

Wenn Sie wirklich entschlossen sind keine if oder ternäre zu verwenden, um die Variable zu bewerten, dann gibt es die Möglichkeit der Nutzung des || Betreiber:

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

Aber, ehrlich gesagt, verwenden nur einen bedingten Operator, Es ist genau das, wofür sie bestimmt sind, und hilft, eine gewisse Sicherheit in der Ausführung und Ausgabe Ihres Skripts zu erzwingen.

+0

Höchstens würde ich für eine '=== null' ternarny gehen, aber nicht wenn statme nt: P – Esailija

+0

Ich stimme Ihrer Vorgehensweise bei der Bewertungsmethode zu; aber ich würde immer noch, unabhängig, den Variablen-/Rückgabewert explizit bewerten, anstatt mich auf die obige Methode zu verlassen (obwohl es funktioniert, fühlt es sich einfach ... * falsch * an, etwas). –

0

Ohne JQuery:

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