是否有优雅的lodash方式将函数应用于种子n
次
let start = 100, n = 3, multiplier = 1.2;
let predictions = _
.range(1, 1 + n)
.map(i => start * Math.pow(multiplier, i));
// => [120,144,172.8]
以更实用的方式,如
let predictions = _
.times(n)
.something(curr => curr * multiplier, /*seed*/ start);
答案 0 :(得分:1)
有时我需要像half-map / half-reduce
这样的东西
您正在寻找的内容类似于iterate
。据我所知,lodash没有它。接下来最好的事情是使用_.mixin
自行定义,如下所示:
_.mixin({
iterate: (n, f, x) =>
_.reduce(_.times(n), arr => _.concat(arr, f(_.last(arr))), [x])
});
现在,您可以按如下方式使用它:
let predictions = _
.iterate(n, curr => curr * multiplier, start)
.slice(1); // remove the start element
这不是最好的解决方案。使用_.concat
会让它变得非常慢。如果您愿意,可以对其进行优化。