【问题标题】:How to use lodash filter and map in one string如何在一个字符串中使用 lodash 过滤器和映射
【发布时间】:2019-05-21 18:09:30
【问题描述】:

我有使用 2 lodash 方法过滤器和映射的代码

 const filtered_holidays = filter(holidays, day => day.holiday === 1);
 const type_calendar_holidays = map(filtered_holidays, 'day');

如何在 lodash 中用 1 个字符串重写它?像这样的东西

holidays.filter().map()....

 const filtered_holidays = filter(holidays, day => day.holiday === 1);
 const type_calendar_holidays = map(filtered_holidays, 'day');

【问题讨论】:

  • 我不会将 lodash 用于如此简单的原生 map() 和 filter() 就可以了。在 JS 中,当您链接某些内容时,其结果将传递给下一个操作。 const filtersHolidays = holiday.filter(day => day.holiday === 1).map(holiday => holiday.day)

标签: javascript arrays object ecmascript-6 lodash


【解决方案1】:

你可以用地图包裹过滤器:

 const result = map(filter(holidays, day => day.holiday === 1),'day');

你可以使用sequence(需要导入整个lodash包):

 const result = _(holidays).filter(day => day.holiday === 1).map('day').value();

您可以将_.flow()(或_.flowRight() aka compose)与lodash/fp 一起使用:

 const result = flow(filter(day => day.holiday === 1), map('day'))(holidays)

注意:flow 和 flowRight 也可以在常规的 lodash 中使用,但是由于参数的顺序是倒序的,并且函数不是自动柯里化的,所以您需要使用 _.partialRight()

 const result = flow(partialRight(filter, day => day.holiday === 1), partialRight(map, 'day'))(holidays)

在这种情况下,最简单的解决方案是使用 vanilla js 链接:

const result= holidays.filter(day => day.holiday === 1).map(o => o.day);

【讨论】:

    【解决方案2】:

    把过滤器放进去就行了?

    const type_calendar_holidays = map(filter(holidays, day => day.holiday === 1), 'day');
    

    【讨论】:

      【解决方案3】:

      在原版 JS 中,您可以像这样使用reduce

      holidays.reduce((r, { day, holiday }) => holiday === 1 ? r.concat(day) : r, [])
      

      【讨论】:

        【解决方案4】:

        只需嵌套filter:

        const type_calendar_holidays = map(filter(holidays, ({ holiday }) => holiday == 1), 'day');
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-05
          • 2021-05-21
          • 2018-02-23
          • 2020-02-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多