有没有结合 _.map() 和 _.filter() 的 lodash 函数?

is there a lodash function that is a combination of _.map() and _.filter()?

我有一组 div 个元素:

<div class="myDiv" key="default">Default Val</div>
<div class="myDiv" key="default">Default Val2</div>
<div class="myDiv" key="myVal-1">Value 1</div>
<div class="myDiv" key="myVal-2">Value 2</div>
<div class="myDiv" key="myVal-3">Value 3</div>

并且我想将所有 'key' 属性(具有 'default' 值的属性除外)收集到一个数组中。 我知道我可以为此使用 _.each(),但是是否有一个结合了 _.map() 和 _.filter() 的 lodash 函数?换句话说,我需要这样的东西:

arr = _.func($('.myDiv'), (el) => {
    // collects truthy values and ignores falsy ones
    return $(el).attr('key') == 'default' ? $(el).attr('key') : false;
});
arr // => ["myVal-1", "myVal-2", "myVal-3"]

只需使用map filter:

arr = _.filter(
  _.map(
    $('.myDiv'),
    el => $(el).attr('key')
  ),
  key => key != 'default'
);

reduce 可以在循环中定义任何内容。但这并不一定意味着它更容易阅读。

arr = _.reduce($('.myDiv'), (result, el) => {
  const key = $(el).attr('key');
  if (key !== 'default') result.push(key);
  return result;
}, []);