Javascript 如何在两个数字之间动态创建不同的步骤

Javascript 如何在两个数字之间动态创建不同的步骤,javascript,jquery,Javascript,Jquery,我需要使用不同的给定步骤在两个数字之间创建一个动态范围,例如在raneg1 范围介于-9.00到+4.00之间,它包含3个不同的步骤 -9.00 -> -6.50 = step is 0.50 -6.00 -> 0.00 = step is 0.25 +0.25 -> +4.00 = step is is0.50 如您所见,数据存储在raneg1字符串中,类似于-09.00\u-6.50\u 0.50作为子范围的开始\u子范围的结束\u步骤 var rane1=“-09.0

我需要使用不同的给定步骤在两个数字之间创建一个动态范围,例如在
raneg1
范围介于
-9.00
+4.00
之间,它包含3个不同的步骤

-9.00 -> -6.50 = step is 0.50
-6.00 -> 0.00 = step is 0.25
+0.25 -> +4.00 = step is is0.50
如您所见,数据存储在
raneg1
字符串中,类似于
-09.00\u-6.50\u 0.50
作为
子范围的开始\u子范围的结束\u步骤

var rane1=“-09.00-6.50-0.50,-6.00-0.00-0.25,+0.25-4.00-0.50”;
变量rane2=“-04.00-9.25-0.25,-09.00-6.50-0.50,-6.00-0.00-0.25,+0.25-8.00-0.50”;
var ranarr1=rane1.split(/\,\s*/).reduce(函数(arr,项){
如果(项目长度){
arr.push(项目拆分(“'));
}
返回arr;
}, []);
var ranarr2=rane2.split(/\,\s*/).reduce(函数(arr,项){
如果(项目长度){
arr.push(项目拆分(“'));
}
返回arr;
}, []);
var列表=[]

不确定步骤部分

第一种方法查找范围中有多少唯一的步骤

第二种方法将检查ranges字符串中每个范围所需的步骤数,并且只统计唯一的步骤数

var rane1=“-09.00-6.50-0.50,-6.00-0.00-0.25,+0.25-4.00-0.50”;
变量rane2=“-04.00-9.25-0.25,-09.00-6.50-0.50,-6.00-0.00-0.25,+0.25-8.00-0.50”;
常量动态范围=(范围)=>{
//设置为计数不同的步数
常量计数器=新集合();
//减少到计数每个范围的最小最大值
const minMax=ranges.split(/\,\s*/).reduce((res,range)=>{
常量[开始、结束、步进]=范围分割(“”);
计数器。添加(步骤)
返回[
res[0]&&parseFloat(res[0])parseFloat(end)?res[1]:end,
]
}, [])
//返回[开始、结束、不同步骤]
返回[…最小最大值,计数器大小]
}
//计算每个范围所需的不同步数
常量dynamicRangeDiffSteps=(范围)=>{
//设置为计算每个范围所需的唯一步数
常量计数器=新集合();
//减少到计数每个范围的最小最大值
const minMax=ranges.split(/\,\s*/).reduce((res,range)=>{
常量[开始、结束、步进]=范围分割(“”);
//将开始、结束步骤转换为浮动
const sFloat=parseFloat(开始),eFloat=parseFloat(结束),stepFloat=parseFloat(步骤)
//添加需要设置的步骤数
计数器。添加((eFloat sFloat)/stepFloat)
返回[
res[0]&&parseFloat(res[0])eFloat?res[1]:结束,
]
}, [])
//返回[开始、结束、不同步骤]
返回[…最小最大值,计数器大小]
}
控制台日志(动态起重机(rane1))
控制台日志(动态起重机(rane2))
console.log(dynamicRangeDiffSteps(rane1))
console.log(dynamicRangeDiffSteps(rane2))

在A_B_步骤模式中,A是否总是小于B?嗨,科林,是的,对于不同的步骤,在你的示例中,你有0.5、0.25、0.5,它应该是2个不同的步骤而不是3个?它们不是固定的!有时甚至不同的数字,我的意思是,你如何计算不同的步数?你说过0.5、0.25和0.5是3个不同的步骤,但既然有两个0.5,那么它应该是2吗