7

在javascript中,我有以下内容:

var inf = id + '|' + city ;

如果 id 或 city 为 null,则 inf 将为 null。

如果 id 或 city 为空,是否有任何巧妙的方式表示然后为空。

我知道在 c# 中您可以执行以下操作:

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

javascript中有类似的方法吗?

4

7 回答 7

21

怎么样:

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

编辑:您可以在加入之前删除“空白”部分,这样如果 id 和 city 中只有一个为空,则 inf 将只包含该部分,如果两者都为空,则 inf 将为空。

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
于 2012-04-06T15:48:22.590 回答
15

总的远射,但试试这个:

var inf = (id || "") + "|" + (city || "");
于 2012-04-06T15:47:13.090 回答
5
var inf = (id == null ? '' : id) + '|' + (city == null ? '' : city)
于 2012-04-06T15:52:39.797 回答
1
function nullToStr(str) {
    return !str || 0 === str.length ? '' : str;
}

用法:

console.log(nullToStr(null);

        function nullToStr(str) {
    return !str || 0 === str.length ? '' : str;
}

console.log(`The value which was null = ${nullToStr(null)}`);
console.log(`The value which was null = ${nullToStr(undefined)}`);
console.log(`The value which was null = ${nullToStr('')}`);
console.log(`The value which was null = ${nullToStr('asdasd')}`);

我认为它会有所帮助并且更容易使用。显然,它基于我在这个线程中找到的其他答案。

于 2020-03-25T10:36:37.033 回答
0
var inf = (id && city) ? (id+"|"+city) : "";
于 2012-04-06T15:57:58.137 回答
0

等效于 c# var inf = (id ?? "") + (city ?? "");(如果idcity可以为空)是

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

这被称为“短路评估”。可空性在 javascript 中不是问题(在 js 中,所有变量都可以为空),但id必须city分配(但不需要值,如var id, city)。

于 2012-04-06T16:51:43.783 回答
0
if (id != ""){
inf = id;
if (city != ""){ inf += " | " + city ;}
}
else 
inf= city;
于 2012-04-06T16:52:01.670 回答