我有一个javascript数组.
addresses = new Array(document.client.cli_Build.value,
document.client.cli_Address.value,
document.client.cli_City.value,
document.client.cli_State.value,
document.client.cli_Postcode.value,
document.client.cli_Country.value);
document.client.cli_PostalAddress.value = addresses.join(", ");
Run Code Online (Sandbox Code Playgroud)
我必须将所有这些数组值的内容复制到邮政地址textarea.当我使用上面的连接函数时,为空值添加了逗号.如何删除这些额外的逗号?
谢谢
Gum*_*mbo 39
您可以filter
用来过滤掉空值:
addresses.filter(function(val) { return val !== null; }).join(", ")
Run Code Online (Sandbox Code Playgroud)
另一种过滤器
myArray.filter(function(val){if(val)return val}).join(", ")
Run Code Online (Sandbox Code Playgroud)
document.write(['this','','',,,,'is','a',,,'test'].filter(function(val){if(val)return val}).join(", "));
Run Code Online (Sandbox Code Playgroud)
var list = [null, undefined, 0, 1, 2, '', 'test'];
// ES5:
var result = list.filter(Boolean).join(', ');
console.log(result);
// ES6, saves 3 characters:
var result = list.filter(x => x).join(', ');
console.log(result);
Run Code Online (Sandbox Code Playgroud)
Underscore是一个很好的实用程序库,用于函数式编程和列表操作:
_.filter(addresses, function(val) { return val !== null; }).join(", ");
Run Code Online (Sandbox Code Playgroud)
编辑:还有一个更紧凑的方式(谢谢安德鲁德安德拉德!):
_.compact(addresses).join(", ");
Run Code Online (Sandbox Code Playgroud)
document.client.cli_PostalAddress.value =
document.client.cli_PostalAddress.value.replace(/(, )+/g,", ");
Run Code Online (Sandbox Code Playgroud)
或者应该是
document.client.cli_PostalAddress.value =
document.client.cli_PostalAddress.value
.replace(/(null, )/g,"").replace(/(, null)/g,"");
Run Code Online (Sandbox Code Playgroud)
??
归档时间: |
|
查看次数: |
38374 次 |
最近记录: |