2012-07-09 9 views
8

Estoy buscando la forma más eficiente de salida empty string en lugar de "null" para null valores. ¿Hay una manera de hacer esto sin declaraciones condicionales (es decir, if o ternario (? :) operador).No renderiza nulo desde el valor del objeto de JavaScript

Ejemplo de código de la siguiente manera:

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

cuando item.PhoneNumber is null, la página se representa con una cadena "nula " dentro del SearchResults div, en lugar de eso quería ser vacío.

+1

¿Por qué? ¿Por qué querrías evitar evaluar tus variables antes del resultado? –

+0

Pensé que habría una manera más eficiente, es decir, algún tipo de función incorporada. Me sorprende que no haya ninguno en JavaScript o jQuery :( – Tsar

+0

Bueno, el operador '||' ('o') hace esto, pero la variable todavía se evalúa primero, sin un' if' o ternario explícito. –

Respuesta

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

Con $.trim (inesperadamente convierte null y undefined a cadena vacía):

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

inesperado porque es tanto poco intuitivo y no documentada.

+0

Voto ascendente porque se nos ocurrió la misma respuesta al mismo tiempo y, también, porque no entiendo el voto abajo. –

1

Prueba de esto,

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

De la pregunta OPs * ¿Hay una manera de hacer esto ** sin ** declaraciones condicionales (es decir, si o?:) * – ManseUK

+1

No voté, pero la pregunta específicamente solicita evitar el ternario operador (así como el 'si'), aunque no se menciona su nombre, por lo que se pierde fácilmente. –

7

Si está realmente decidido no utilizar un ternaria if o para evaluar la variable, entonces existe la posibilidad de utilizar el operador ||:

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

Pero, honestamente, sólo tiene que utilizar un operador condicional, es para lo que están diseñados, y ayuda a imponer una cierta cantidad de seguridad en la ejecución y el resultado de su secuencia de comandos.

+0

A lo sumo iría por un '=== null' ternarny pero no si stateme nt: P – Esailija

+0

Estoy de acuerdo con su enfoque del método de evaluación; pero aún así, sin embargo, evaluaría explícitamente la variable/valor de retorno, en lugar de confiar en el método anterior (aunque funciona, simplemente se siente ... * mal *, ligeramente). –

0

Sin JQuery:

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