仅当字符串不为 null 或空时才使用定界符连接字符串

新手上路,请多包涵

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

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

 var address;
var city;
var state;
var zip;

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

我想在 div 中输出完整地址,用逗号+空格分隔,所以是这样的:

 $("#addressDiv").append(address + ", " + city + ", " + state + ", " + zip);

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

有没有什么简单的方法可以加入这组字段中的所有非空字段,而无需在将其添加到字符串之前单独检查每个字段的长度?

原文由 froadie 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 424
2 个回答

考虑

 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) 相同)删除所有“虚假”值(空值、未定义值、空字符串等)。如果您对“空”的定义不同,那么您必须提供它,例如:

  [...].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

原文由 georg 发布,翻译遵循 CC BY-SA 4.0 许可协议

另一种单线解决方案,不需要 jQuery

 var address = "foo";
var city;
var state = "bar";
var zip;

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

原文由 aga 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题