我试图使用javascript来爆炸一个字符串来选择searchterms,空格分隔.但是,如果searchterm由空格结束,我会得到空数组元素,如下所示.
我应该怎么做以避免后处理这个数组并删除空元素?
var str = "searchterm1 searchterm2";
console.log(str.split(" ")); // ["searchterm1", "searchterm2"]
var strb = "searchterm1 "; // Note the ending whitespace
console.log(strb.split(" ")); // ["searchterm1", ""]
Run Code Online (Sandbox Code Playgroud)
Gum*_*mbo 52
您可以简单地匹配所有非空格字符序列:
str.match(/[^ ]+/g)
Run Code Online (Sandbox Code Playgroud)
Ore*_*aki 20
这有点旧,但出于文档目的,还有另一种巧妙的方法。
someString.filter(Boolean);
// Example
['fds', '', 'aaaaa', 'AA', 'ffDs', "", 'd'].filter(Boolean);
// Output
["fds", "aaaaa", "AA", "ffDs", "d"]
Run Code Online (Sandbox Code Playgroud)
编辑
它是如何工作的 ?
以下是相同的
.filter(Boolean)
.filter((value) => Boolean(value))
Run Code Online (Sandbox Code Playgroud)
Boolean()as 函数表现为从标准输入到输出的任何类型到布尔值的转换器。
参考文献:
全局对象 -> 布尔值
Truthy
Falsy
use*_*877 14
无论什么分离器,它始终有效:
str.split(' ').filter(function(i){return i})
// With ES6
str.split(' ').filter(i => i)
Run Code Online (Sandbox Code Playgroud)
在某些其他情况下,过滤器逻辑也可以更改.
| 归档时间: |
|
| 查看次数: |
17951 次 |
| 最近记录: |