在这个字符串拆分操作中,`filter`调用是什么?

时间:2015-11-04 08:01:24

标签: javascript ecmascript-5

我有一系列遗留代码可以在分号上拆分字符串:

var adds = emailString.split(/;+/).filter(Boolean);

filter(Boolean)部分可以做什么?

1 个答案:

答案 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", ""]