是否有优雅的 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);
最佳答案
sometimes I need something like 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
让它真的很慢。如果您愿意,可以对其进行优化。
关于javascript - Lodash:每次传递最后一个计算结果时,将函数应用于种子n次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46217583/