2012-04-06 17 views
6

en JavaScript Tengo el siguiente:javascript valor nulo en cadena

var inf = id + '|' + city ; 

si Identificación del o de la ciudad son nulas continuación inf será nulo.

¿Hay alguna forma ingeniosa de decir si la identificación o la ciudad son nulas y luego en blanco?

sé en C# se puede hacer lo siguiente:

var inf = (id ?? "") + (city ?? ""); 

Cualquier método similar en javascript?

+0

Tu pregunta es un poco confusa. Proporcione uno o más valores de ejemplo para 'inf'. –

+0

posible duplicado de [nulo coalescente operador para javascript?] (Http://stackoverflow.com/questions/476436/null-coalescing-operator-for-javascript) –

Respuesta

4
var inf = (id == null ? '' : id) + '|' + (city == null ? '' : city) 
+0

Esa es solo una forma más larga de hacer lo que Elliot está haciendo en su respuesta – nickf

+3

No tengo idea de por qué esto fue aceptado en lugar de la respuesta de pysho. –

+0

A veces las respuestas son más largas y fáciles de leer y comprender que las más cortas y crípticas. Mientras no esté mal, ¿por qué les importa a las personas? –

11

tiro largo total, pero intente esto:

var inf = (id || "") + "|" + (city || ""); 
+0

esto funcionará para vars indefinidos, no tan seguro acerca de valores nulos. –

+2

Sugiero agregar paréntesis: 'var inf = (id ||" ") +" | " + (city || ""); ' –

+0

@Rocket: Bien, gracias, aunque no creo que importe. –

20

¿Qué tal:

var inf = [id, city].join('|'); 

EDIT: Puede eliminar las partes "en blanco" antes de unirse, de manera que si sólo uno de Identificación y la ciudad es nula, inf solo contendrá esa parte y si ambas son nulas, inf estará vacía.

var inf = _([id, city]).compact().join('|'); // underscore.js 
var inf = [id, city].compact().join('|'); // sugar.js 
var inf = [id, city].filter(function(str) { return str; }).join('|'); // without helpers 
+2

Whoa, nice one. –

+0

'inf' no estará en blanco, si' id' y 'city' son' null's. – Engineer

+0

@Ingeniero: Sí, será '" | "', el resultado deseado. –

0
var inf = (id && city) ? (id+"|"+city) : ""; 
+0

¿Qué pasa si uno u otro es nulo? Quería que cada variable se reemplazara por '" "' si fuera nulo, no por completo. –

+0

@Rocket "si id o city son nulos, entonces inf será nulo", creo que quiere una cadena vacía, cualquiera de las dos es nula. – xdazz

0

Equivalente a C# var inf = (id ?? "") + (city ?? ""); (si id y city son anulable) es

var inf = (id || '') + (city || ''); 

Esto se conoce como 'Short-Circuit Evaluation'. Nulability no es un problema en javascript (en js todas las variables son anulables), pero id y city tienen que asignarse (pero no necesitan un valor, como en var id, city).

0
if (id != ""){ 
inf = id; 
if (city != ""){ inf += " | " + city ;} 
} 
else 
inf= city;