繁体   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