查找范围内最接近的数字?

时间:2010-04-27 07:20:11

标签: actionscript-3

在范围内找到结束值的最佳方法是什么......

例如我有一个0,90,180,270,360的数组.. 还有46号......

在阵列中找到90的最佳方法是什么?

(在actipnscript 3中)

3 个答案:

答案 0 :(得分:2)

你想如何定义最接近?

如果你的意思是差异最小,那么循环遍历每个值,计算差值的绝对值,记下看到的最小值。

如果列表按大小排序,那么当您看到差异大于找到的最小值时停止,esle遍历整个集合。

答案 1 :(得分:1)

如果您的数组完全匹配您的模式示例([0,90,180,270,360]),它似乎是以90为步长的角度,那么您可以这样做:

var range:Array=[0, 90, 180, 270, 360];

function getIndexFrom(value:Number):int {

 // keep the value in range (0, 360)
 if (value<0) {
   value= 360 - (-value % 360);
 } else if (value>360) {
  value=value % 360;
 }

 return int(0.5 + ( value / 90.0 ) );
}

答案 2 :(得分:1)

var range:Array=[0, 90, 180, 270, 360];
trace(range.indexOf(90));
相关问题