紧凑的数据范围

Compact range of data

如果我有这个数组:

[ 0.8, 2, 3.33, 60, 98.6 ]

我可以编写什么样的函数(在 JavaScript 中)来使值更接近,但在一定范围内?这样最小的vals仍然是最小的,最大的仍然是最大的,它们只是更接近?

基本上这些值中的每一个都是图表上气泡的半径,我几乎看不到小的..我想让小的变大,大的变小。

您似乎在努力使每个值都更接近平均值。 像这样使用 Array#map and 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 ]

基本上,此代码计算数组的平均值,然后映射每个值,使其距离平均值的一半。