这感觉应该很简单,如果我在这里遗漏了什么,那么很抱歉,但是我正在试图找到一种简单的方法来连接非空或非空字符串。
我有几个不同的地址字段:
var address;
var city;
var state;
var zip;这些值是根据页面中的某些表单字段和其他js代码设置的。
我想在div中输出完整地址,用逗号+空格分隔,如下所示:
$("#addressDiv").append(address + ", " + city + ", " + state + ", " + zip);问题是,这些字段中的一个或全部为空/空。
是否有任何简单的方法来连接这组字段中的所有非空字段,而无需单独检查每个字段的长度,然后再将其添加到字符串中?
发布于 2013-11-11 09:38:07
考虑一下
var address = "foo";
var city;
var state = "bar";
var zip;
text = [address, city, state, zip].filter(Boolean).join(", ");
console.log(text)
.filter(Boolean) (与.filter(x => x)相同)移除所有"falsy“值(空值、空字符串、空字符串等)。如果您对“空”的定义不同,那么您必须提供它,例如:
[...].filter(x => typeof x === 'string' && x.length > 0)将只保留列表中的非空字符串。
--
(过时的jquery答案)
var address = "foo";
var city;
var state = "bar";
var zip;
text = $.grep([address, city, state, zip], Boolean).join(", "); // foo, bar发布于 2013-11-11 10:02:20
还有一个不需要jQuery的单行解决方案:
var address = "foo";
var city;
var state = "bar";
var zip;
text = [address, city, state, zip].filter(function (val) {return val;}).join(', ');发布于 2018-03-21 15:29:39
只是:
[address, city, state, zip].filter(Boolean).join(', ');https://stackoverflow.com/questions/19902860
复制相似问题