返回介绍

geometricProgression - 创建一个指定范围的数字数组,后一个数是前一个数的 N 倍

发布于 2019-05-30 01:44:45 字数 843 浏览 1006 评论 0 收藏 0

初始化一个包含指定范围中数字的数组,包含 startend,两个元素之间的比例是step(后一个数是前一个数的step 倍)。 如果 step 等于 1 则返回一个错误。

使用Array.from()Math.log()Math.floor() 来创建一个所需长度的数组,使用 Array.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]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文