cor*_*vid 3 javascript underscore.js lodash
我想做如下的事情
_(data)
.map(() => /** ... */)
.reduce(function (modifier, doc) {
modifier.$set = modifier.$set || {};
modifier.$set.names = doc.names;
return modifier;
}, {})
.map(() => /** ... */)
.flatten()
Run Code Online (Sandbox Code Playgroud)
然而,似乎在减少后,链断裂.
有没有办法从reduce返回的值继续链?
reduce() 方法不能保证生成其他方法可以操作的集合(数组,对象或字符串),因此默认情况下它可以是可链接的.
从关于lodash object(_)的lodash文档:
操作和返回数组,集合和函数的方法可以链接在一起.检索单个值或可能返回原始值的方法将自动结束返回未包装值的链.
但是,您可以使用明确强制链接_.chain().这将允许在lodash包装器中显式返回单个值和基元以继续链接.
因此对于您的代码可能如下所示:
_.chain(data)
.map(() => /** ... */)
.reduce(function (modifier, doc) {
modifier.$set = modifier.$set || {};
modifier.$set.names = doc.names;
return modifier;
}, {})
.map(() => /** ... */)
.flatten()
Run Code Online (Sandbox Code Playgroud)