首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有当字符串不是空或空时,才用分隔符连接字符串

问只有当字符串不是空或空时,才用分隔符连接字符串
EN

Stack Overflow用户
提问于 2013-11-11 09:27:34
回答 7查看 123.2K关注 0票数 181

这感觉应该很简单,如果我在这里遗漏了什么,那么很抱歉,但是我正在试图找到一种简单的方法来连接非空或非空字符串。

我有几个不同的地址字段:

代码语言:javascript
复制
var address;
var city;
var state;
var zip;

这些值是根据页面中的某些表单字段和其他js代码设置的。

我想在div中输出完整地址,用逗号+空格分隔,如下所示:

代码语言:javascript
复制
$("#addressDiv").append(address + ", " + city + ", " + state + ", " + zip);

问题是,这些字段中的一个或全部为空/空。

是否有任何简单的方法来连接这组字段中的所有非空字段,而无需单独检查每个字段的长度,然后再将其添加到字符串中?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-11-11 09:38:07

考虑一下

​

代码语言:javascript
复制
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“值(空值、空字符串、空字符串等)。如果您对“空”的定义不同,那么您必须提供它,例如:

代码语言:javascript
复制
 [...].filter(x => typeof x === 'string' && x.length > 0)

将只保留列表中的非空字符串。

--

(过时的jquery答案)

代码语言:javascript
复制
var address = "foo";
var city;
var state = "bar";
var zip;

text = $.grep([address, city, state, zip], Boolean).join(", "); // foo, bar
票数 403
EN

Stack Overflow用户

发布于 2013-11-11 10:02:20

还有一个不需要jQuery的单行解决方案:

代码语言:javascript
复制
var address = "foo";
var city;
var state = "bar";
var zip;

text = [address, city, state, zip].filter(function (val) {return val;}).join(', ');
票数 127
EN

Stack Overflow用户

发布于 2018-03-21 15:29:39

只是:

代码语言:javascript
复制
[address, city, state, zip].filter(Boolean).join(', ');
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19902860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档