react如何获取option的下标和值_js react根据几个颜色点计算区间任意数值对应颜色...

一般用于生成地图上点颜色的。

示例:

const cm=new ColorRangeMaker({color:[[80,163,186],[234,199,54],[217,78,93]],value:[0,200]});

const color=cm.make(100);

console.log(color);

源码

class ColorRangeMaker{

option={};

constructor(option){

let vRange=option.value[1]-option.value[0];

if(option.color.length==2){//仅有两个颜色

let rA=(option.color[1][0]-option.color[0][0])/vRange;

let gA=(option.color[1][1]-option.color[0][1])/vRange;

let bA=(option.color[1][2]-option.color[0][2])/vRange;

this.option={vRange,rA,gA,bA,option};

}else{//两个以上颜色

const makers=[];

let vA=vRange/(option.color.length-1);

for(let i=1;i

const maker=new ColorRangeMaker({color:[option.color[i-1],option.color[i]],

value:[option.value[0]+vA*(i-1),

option.value[0]+vA*i]});

makers.push(maker);

}

this.option={makers,vA,option};

}

}

make(value){

const {makers,vRange,rA,gA,bA,vA,option}=this.option;

if(value

return option.color[0];

}else if(value>option.value[option.value.length-1]){

return option.color[option.color.length-1];

}else{

if(option.color.length==2){//仅有两个颜色

let color=option.color[0].map(a=>a);

let vATmp=value-option.value[0];

color[0]+=parseInt(rA*vATmp);

color[1]+=parseInt(gA*vATmp);

color[2]+=parseInt(bA*vATmp);

return color;

}else{

for(let i=1;i

if(value<=option.value[0]+vA*i){

return makers[i-1].make(value);

}

}

}

}

}

}

export default ColorRangeMaker;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值