我有一系列遗留代码可以在分号上拆分字符串:
var adds = emailString.split(/;+/).filter(Boolean);
filter(Boolean)
部分可以做什么?
答案 0 :(得分:5)
filter(Boolean)
只会保留数组中的truthy值。
filter
需要一个回调函数,通过提供Boolean
作为参考,它将被称为Boolean(e)
,用于数组中的每个元素e
和结果该操作将返回filter
。
如果返回的值为true
,则元素e
将保留在数组中,否则它不会包含在数组中。
示例强>
var arr = [0, 'A', true, false, 'tushar', '', undefined, null, 'Say My Name'];
arr = arr.filter(Boolean);
console.log(arr); // ["A", true, "tushar", "Say My Name"]

在代码中
var adds = emailString.split(/;+/).filter(Boolean);
我的猜测是字符串emailString
包含以;
分隔的值,其中分号可以多次出现。
> str = 'a@b.com;;;;c@d.com;;;;dd@dd.com;'
> str.split(/;+/)
< ["a@b.com", "c@d.com", "dd@dd.com", ""]
> str.split(/;+/).filter(Boolean)
< ["a@b.com", "c@d.com", "dd@dd.com"]
此处的split
会返回["a@b.com", "c@d.com", "dd@dd.com", ""]
。