如果我有这个数组:
[ 0.8, 2, 3.33, 60, 98.6 ]
我可以编写什么样的函数(在JavaScript中)以使值更接近,但是在一定范围内?因此,最小的val仍然是最小的,最大的仍然是最大的,它们只是更接近?
基本上每个vals都是图表上气泡的半径,我几乎看不到那些小的..我想让小的那些更大,而大的那些也按比例变小。
答案 0 :(得分:1)
看起来你正试图让每个价值接近平均水平。 像这样使用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 ]
基本上,此代码计算数组的平均值,然后映射每个值,使其距离平均值的一半。