【问题标题】:How to use lodash `value` and continue with chain?如何使用 lodash `value` 并继续链?
【发布时间】:2017-01-01 18:16:24
【问题描述】:

我喜欢 lodash,并在许多项目中使用它。

我总是遇到这个问题,我找不到解决办法。

我想用 lodash 做点什么,保存一个临时状态,然后继续。

例如,假设我有moviesList,这是一个电影列表及其 id 和利润,我想要

  • 按电影 ID 索引电影并将结果保存在 moviesById
  • 过滤盈利电影并将结果保存在overMillionProfit

我想在不破坏链条的情况下这样做。 类似的东西(一厢情愿):

  var moviesList = [{id : 1}, {id:2}, ...];
  var moviesById = {};
  var overMillionProfit = [];
  _(moviesList)
      .keyBy('id')
      .do((unwrappedValue)=> moviesById = unwrappedValue)
      .values()
      .filter( (m) => m.profit > 1000000)
      .do((unwrappedValue) => overMillionProfit = unwrappedValue)

目前,我觉得有必要像这样打破链条:

  var moviesList = [{id : 1}, {id:2}, ...];
  var moviesById = _.keyBy(moviesList,'id');
  var overMillionProfit = _.filter(moviesList, ...);

也许对于这种情况会更好,但在某些情况下我希望能够像上面那样做。

有没有办法做到这一点?

【问题讨论】:

    标签: lodash


    【解决方案1】:

    您可以为此使用_.tap()

    var moviesList = [{id : 1}, {id:2}, {id:3}];
      var moviesById;
      var overMillionProfit;
      var result = _(moviesList)
          .keyBy('id')
          .tap((unwrappedValue)=> moviesById = unwrappedValue)
          .values()
          .filter( (m) => m.id > 1)
          .tap((unwrappedValue) => overMillionProfit = unwrappedValue)
          .value();
    
    console.log('moviesById\n', moviesById);
    console.log('overMillionProfit\n', overMillionProfit);
    console.log('result\n', result);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

    【讨论】:

      猜你喜欢
      • 2017-09-01
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多