需要一些帮助。
我有示例值 4.8(这是来自评分 4.8/5 的值)
现在我需要把它转换成数组,数组应该是这样的
[1, 1, 1, 1, 0.8]
我是什么意思?它应该取值并组成包含 5 个元素的数组,但每个索引不应超过 1。
其他例子:
2.8 应该是 [1, 1, 0.8, 0 ,0]
0.5 应该是 [0.5, 0, 0, 0, 0]
5 应该是 [1, 1, 1, 1, 1]
3 应该是 [1, 1, 1, 0, 0]
等...
let number = 4.8;
最佳答案
您可以通过将长度设置为 5 来使用 Array.from()
。每次取 num - i
或 1 的 0 和最大值之间的最小值:
const convert = num => Array.from({ length: 5 },
(_, i) => Math.max(Math.min(num - i, 1), 0)
)
console.log(convert(4.5))
console.log(convert(2.5))
console.log(convert(0.5))
console.log(convert(5))
如果精度是个问题,我添加了一个 safeSubtract
函数来处理:
const safeSubtract = (n, i) => {
const [int, dec = ''] = String(n).split('.')
return +`${+int - i}.${dec}`
};
const convert = num => Array.from({ length: 5 },
(_, i) => Math.max(Math.min(safeSubtract(num, i), 1), 0)
)
console.log(convert(4.8))
console.log(convert(2.8))
console.log(convert(0.8))
console.log(convert(5))
关于javascript - 如何将数字值转换为数组中具有单独值的数组,其中列表中索引的最大值为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56560759/