如果我有这个数组:
[ 0.8, 2, 3.33, 60, 98.6 ]
我可以编写什么样的函数(在 JavaScript 中)来使值在一定范围内更接近?那么最小的值仍然是最小的,最大的值仍然是最大的,它们只是更接近?
基本上,这些值中的每一个都是图表上气泡的半径,我几乎看不到小的值。我想让小值按比例变大,大值按比例变小。
最佳答案
看起来您正试图使每个值更接近平均值。 使用 Array#map 的组合和 Array#reduce像这样:
var array = [ 0.8, 2, 3.33, 60, 98.6 ]
var average = array.reduce(function (a, b) {
return a + b
}) / array.length
var result = array.map(function (x) {
return (x - average) / 2 + average
}) //=> [16.873, 17.473, 18.138, 46.473, 65.773 ]
基本上,此代码计算数组的平均值,然后映射每个值,使其成为该平均值距离的一半。
关于javascript - 数据范围紧凑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41003426/