2012-04-06 15 views
6

w JavaScript mam następujące:javascript wartość null w ciąg

var inf = id + '|' + city ; 

jeśli id ​​lub miasto tracą wtedy inf będzie null.

Czy jest jakiś sposób na powiedzenie, że id lub miasto są puste, a następnie puste.

wiem w C# można wykonać następujące czynności:

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

dowolnej podobnej metody w javascript?

+0

Twoje pytanie jest nieco mylące. Podaj jedną lub więcej przykładowych wartości dla 'inf'. –

+0

możliwy duplikat [operator koalescencji zerowej dla javascript?] (Http://stackoverflow.com/questions/476436/null-coalescing-operator-for-javascript) –

Odpowiedz

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

To tylko dłuższy sposób robienia tego, co robi Elliot w swojej odpowiedzi. – nickf

+3

Nie mam pojęcia, dlaczego to zostało przyjęte zamiast odpowiedzi pysho. –

+0

Czasami dłuższe i łatwiejsze do odczytania i zrozumienia odpowiedzi są lepsze niż te krótsze i tajemnicze. Dopóki nie jest źle, dlaczego ludzie się tym przejmują. –

11

Razem długo strzał, ale spróbuj tego:

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

to będzie działać dla niezdefiniowanych zmiennych, nie jest tak pewny o wartościach pustych. –

+2

Proponuję dodać nawias: 'var inf = (id ||" ") +" | " + (miasto || ""); ' –

+0

@Rocket: W porządku, dzięki, chociaż nie sądzę, żeby to miało znaczenie. –

20

Jak o:

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

EDIT: Można usunąć "Blank" części przed przystąpieniem, tak, że tylko wtedy, gdy jeden z identyfikatorem a miasto ma wartość null, inf po prostu zawiera tę część, a jeśli obie są wartościami null inf będą puste.

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' nie będzie puste, jeśli' id' i 'city' mają wartość' null's. – Engineer

+0

@Engineer: Tak, to będzie '" | "', pożądany wynik. –

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

Co się stanie, jeśli jedna z nich ma wartość zerową? Chciał, aby każda zmienna została zamieniona na "" ", jeśli była pusta, a nie cała. –

+0

@Rocket "Jeśli id ​​lub miasto mają wartość null, inf będzie zerowy", myślę, że chce pustego łańcucha, albo jeden ma wartość zerową. – xdazz

0

odpowiadający C# var inf = (id ?? "") + (city ?? ""); (jeśli id i city są pustych) jest

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

ten jest określany jako 'Short-Circuit Evaluation'. Nullability nie jest problemem w javascript (w js wszystkie zmienne są zerowe), ale muszą być przypisane id i city (ale nie potrzebują wartości, jak w var id, city).

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