【问题标题】:Create array of decimal values counting down to 0创建倒数到 0 的十进制值数组
【发布时间】:2019-01-10 15:14:26
【问题描述】:

在 JavaScript/jQuery 中,我生成的值可能会有所不同,但通常类似于 0.12 或 0.25。

我想生成一个具有一定数量值(大约 10 个值左右)的数组,并在数组的开头或结尾包含上面的数字。我希望这些值减少到 0 所以例如 -

变量值 = [0, 0.02, 0.04, 0.06, 0.08, 0.10, 0.12]

我只是不太确定如何实现这一目标。

谢谢

【问题讨论】:

  • 可以添加示例输入吗?
  • 所以你是说你想要一个 X 值的数组,在 0 和 Y 之间均匀分布?
  • 看起来像一个简单的循环除法问题。
  • 这似乎是一个 XY 问题,你为什么需要这个数组?它将用于什么?
  • 很抱歉,小数点是正态分布图的计算概率值,因此生成该数字所涉及的数学很复杂。我只能说我还没有遇到过超过 0.3 @Monica Acha 的情况

标签: javascript jquery arrays countdown


【解决方案1】:

您可以使用Array.from 解决这个问题:

function sequence(len, max) {
    return Array.from({length: len}, (v, k) => (k * max / (len - 1)).toFixed(2));
}

console.log(sequence(7, 0.12));

【讨论】:

  • 我添加了toFixed(2),以防浮点问题对您来说是个问题,但您很有可能完全删除它。
  • 谢谢@cmbuckley 我遇到了一个问题/错误,因为 v 和 k 都没有被定义。我确定我是个傻瓜,但需要澄清一下
  • 很可能是 JavaScript 版本问题。
  • 如果您遇到Array.from 的问题,最好查看here 或Create a JavaScript array containing 1…N 的其他实现。 underscore.js 还有一个_.range 函数。
【解决方案2】:

另一种方法是创建一个预定义长度的新数组,然后使用map() 用预期值填充数组:

const createSeq = (len, val) =>
{
    return new Array(len).fill(0).map((x, i) => val / (len - 1) * i);
}

console.log(createSeq(7, 0.12));
console.log(createSeq(10, 0.25));

【讨论】:

    猜你喜欢
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2019-01-05
    • 2018-05-17
    • 2021-05-18
    • 2021-07-27
    相关资源
    最近更新 更多