这个字符串拆分操作中的“过滤器”调用是什么?
What is the `filter` call for in this string split operation?
我有一行遗留代码用于在分号上拆分字符串:
var adds = emailString.split(/;+/).filter(Boolean);
filter(Boolean)
部分可以做什么?
filter(Boolean)
只会保留数组中的真实值。
filter
需要一个回调函数,通过提供 Boolean
作为参考,它将被调用为 Boolean(e)
数组中的每个元素 e
和结果的操作将 returned 到 filter
.
如果 returned 值为 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
就这个return["a@b.com", "c@d.com", "dd@dd.com", ""]
.
我有一行遗留代码用于在分号上拆分字符串:
var adds = emailString.split(/;+/).filter(Boolean);
filter(Boolean)
部分可以做什么?
filter(Boolean)
只会保留数组中的真实值。
filter
需要一个回调函数,通过提供 Boolean
作为参考,它将被调用为 Boolean(e)
数组中的每个元素 e
和结果的操作将 returned 到 filter
.
如果 returned 值为 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
就这个return["a@b.com", "c@d.com", "dd@dd.com", ""]
.