2012-04-06 16 views
6

in javascript ho il seguente:javascript valore nullo nella stringa

var inf = id + '|' + city ; 

se id o città sono nulli allora inf sarà nullo.

C'è qualche modo lucido per dire se l'id o la città sono nulli e poi vuoti.

so in C# è possibile effettuare le seguenti operazioni:

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

Qualsiasi metodo simile in JavaScript?

+0

La tua domanda è un po 'confusa. Si prega di fornire uno o più valori di esempio per 'inf'. –

+0

possibile duplicato di [null coalescing operator for javascript?] (Http://stackoverflow.com/questions/476436/null-coalescing-operator-for-javascript) –

risposta

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

Questo è solo un modo più lungo per fare ciò che Elliot sta facendo nella sua risposta – nickf

+3

Non ho idea del perché questo è stato accettato al posto della risposta di pysho. –

+0

A volte più lunghe e più facili da leggere e comprendere le risposte sono meglio di quelle più brevi e criptici. Finché non è sbagliato, perché le persone si preoccupano. –

11

campo lungo totale, ma provate questo:

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

questo funzionerà per vde non definite, non così sicuro dei valori nulli. –

+2

Suggerirei di aggiungere una parentesi: 'var inf = (id ||" ") +" | " + (città || ""); ' –

+0

@Rocket: Va bene, grazie, anche se non penso che sarebbe importante. –

20

ne dite:

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

EDIT: è possibile rimuovere le parti "in bianco" prima di entrare, in modo che se uno solo di id e city è nullo, inf conterrà solo quella parte e se entrambi sono nulli inf sarà vuoto.

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, bello. –

+0

'inf' non sarà vuoto, se' id' e 'city' sono' null's. – Engineer

+0

@Engineer: Sì, sarà '" | "', il risultato desiderato. –

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

Cosa succede se uno o l'altro è nullo? Voleva che ogni variabile venisse sostituita con "" "" se fosse nullo, non il tutto. –

+0

@Rocket "se id o città sono nulli quindi inf sarà nullo", penso che voglia una stringa vuota o uno è nullo. – xdazz

0

Equivalente a C# var inf = (id ?? "") + (city ?? ""); (se id e city sono annullabili) è

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

Questo è indicato come 'Short-Circuit Evaluation'. Nullability non è un problema in javascript (in js tutte le variabili sono annullabili), ma è necessario assegnare id e city (ma non è necessario un valore, come in var id, city).

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