什么是找到一个范围中的值闭合的最佳方式...寻找距离最近的号码?
例如我有0,90,180,270,360 .. 并有一批46 ...
阵列在数组中找到90的最佳方法是什么?
(in actipnscript 3)
什么是找到一个范围中的值闭合的最佳方式...寻找距离最近的号码?
例如我有0,90,180,270,360 .. 并有一批46 ...
阵列在数组中找到90的最佳方法是什么?
(in actipnscript 3)
你想如何定义最接近的?
如果您的意思是最小差异,那么循环遍历每个值,计算差异的绝对值,记下看到的最小值。
如果列表按照大小排序,那么当您看到大于最小找到的差值时停止,esle遍历整个集合。
如果阵列严丝合缝您的图案的例子([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));
}
var range:Array=[0, 90, 180, 270, 360];
trace(range.indexOf(90));
这没有找到最接近的号码。 – fgb 2012-12-01 21:07:50
+1。如果数组不经常更改,您应该尝试保持排序并采用第二种方法。 – back2dos 2010-04-27 08:36:57