在范围内找到结束值的最佳方法是什么......
例如我有一个0,90,180,270,360的数组.. 还有46号......
在阵列中找到90的最佳方法是什么?
(在actipnscript 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));