数组数据如何等比例缩放到固定范围之间

78 阅读1分钟

当我在做数据处理时候,类似echarts的散点图时候,参数symbolSizec,需要球的大小不能超过太大,这样子,需要一个范围比如范围是[1,30]

比如:需要将数组[304,23,25,900,1303]压缩到[1,30]之间

代码实现如下:

let list = [304,23,25,900,1303]

const begin=1, end=30;
const max= Math.max.apply(null, list);  //Math.max.apply(null, 数组)获取数组最大值 ;
let arr=[];
for(let i=0;i<list.length;i++){
    arr.push(((list[i]-1)/(max-1)*(end-1)+ begin).toFixed(1));
}
console.log(arr);

这样子就缩小的范围里面了

核心代码:

(list[i]-1)/(max-1)*(end-1)+ begin