2020-04-07
描述
初始化一个包含 start
和 end
在内的指定范围数字的数组,每两项之间的比率为 step
。如果 step
等于 1
的话,则返回一个错误。
提示
- 使用
Array.from()
,Math.log()
和Math.floor()
创建一个符合需求长度的数组 - 使用
Array.prototype.map()
填充范围内所期待的值 - 第二个参数
start
的默认值为1
- 第三个参数
step
的默认值为2
代码
const geometricProgression = (end, start = 1, step = 2) =>
Array.from({ length: Math.floor(Math.log(end / start) / Math.log(step)) + 1 }).map(
(v, i) => start * step ** i
);
示例
根据要求获取对应的等比数列:
geometricProgression(256); // [1, 2, 4, 8, 16, 32, 64, 128, 256]
geometricProgression(256, 3); // [3, 6, 12, 24, 48, 96, 192]
geometricProgression(256, 1, 4); // [1, 4, 16, 64, 256]