簡體   English   中英

在lodash減少后繼續鏈

[英]Continue chain after reduce in lodash

我想做如下的事情

_(data)
  .map(() => /** ... */)
  .reduce(function (modifier, doc) {
    modifier.$set = modifier.$set || {};
    modifier.$set.names = doc.names;
    return modifier;
  }, {})
  .map(() => /** ... */)
  .flatten()

然而,似乎在減少后,鏈斷裂。

有沒有辦法從reduce返回的值繼續鏈?

reduce()方法不能保證生成其他方法可以操作的集合(數組,對象或字符串),因此默認情況下它是可鏈接的是沒有意義的。

從關於lodash對象( _ )的lodash文檔:

操作和返回數組,集合和函數的方法可以鏈接在一起。 檢索單個值或可能返回原始值的方法將自動結束返回未包裝值的鏈。

_文檔

但是,您可以使用_.chain()顯式強制鏈接。 這將允許在lodash包裝器中顯式返回單個值和基元以繼續鏈接。

因此對於您的代碼可能如下所示:

_.chain(data)
  .map(() => /** ... */)
  .reduce(function (modifier, doc) {
    modifier.$set = modifier.$set || {};
    modifier.$set.names = doc.names;
    return modifier;
  }, {})
  .map(() => /** ... */)
  .flatten()

_.chain()文檔

lodash文檔說reduce()不是可鏈接的。 請參見此處:“默認情況下不可鏈接的包裝器方法是:... reduce” https://lodash.com/docs#_

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM