【问题标题】:is there a lodash function that is a combination of _.map() and _.filter()?是否有一个 lodash 函数是 _.map() 和 _.filter() 的组合?
【发布时间】:2021-12-29 16:42:17
【问题描述】:

我有一组 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>

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

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"]

【问题讨论】:

    标签: javascript lodash


    【解决方案1】:

    只需使用map filter:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2018-04-24
        • 1970-01-01
        • 1970-01-01
        • 2014-08-08
        • 2020-08-16
        • 2023-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多