Created
October 18, 2011 08:43
-
-
Save RhinoLu/1294945 to your computer and use it in GitHub Desktop.
尋找特定數值是否在區間範圍內
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package | |
{ | |
import flash.display.Sprite; | |
public class Main extends Sprite | |
{ | |
private var _labelArray:Array = [10, 30, 50, 70, 90]; | |
private var _midDotArray:Array; | |
private var _combineArray:Array; | |
private var _newMidDotArray:Array; | |
public function Main() | |
{ | |
_midDotArray = makeBetweenArray(_labelArray); | |
//t.obj(_midDotArray); | |
_combineArray = combineArray(_labelArray,_midDotArray); | |
//t.obj(_combineArray); | |
_newMidDotArray = makeBetweenArray(_combineArray); | |
//t.obj(_newMidDotArray); | |
_newMidDotArray.unshift(5); | |
_newMidDotArray.push(95); | |
t.obj(_newMidDotArray); | |
trace(getCloseValueInArray(_newMidDotArray, 4)); | |
trace(getCloseValueInArray(_newMidDotArray, 5)); | |
trace(getCloseValueInArray(_newMidDotArray, 50)); | |
trace(getCloseValueInArray(_newMidDotArray, 95)); | |
trace(getCloseValueInArray(_newMidDotArray, 96)); | |
} | |
// 點與點中間值 | |
private function makeBetweenArray(array:Array):Array | |
{ | |
var _array:Array = []; | |
for (var i:int = 0; i < array.length; i++) { | |
if (i + 1 < array.length) { | |
_array.push(array[i] + int(array[i + 1] - array[i]) * 0.5); | |
} | |
} | |
return _array; | |
} | |
// 將中間值置回原陣列 | |
private function combineArray(originalArray:Array, midArray:Array):Array | |
{ | |
var _array:Array = []; | |
var len:uint = originalArray.length; | |
for (var i:int = 0; i < len; i++) { | |
_array.push(originalArray[i]); | |
if (i < midArray.length) { | |
_array.push(midArray[i]); | |
} | |
} | |
return _array; | |
} | |
// 回傳區間,若-1則不在區間內 | |
private function getCloseValueInArray(array:Array, value:Number):int | |
{ | |
var result:int = -1; | |
var len:uint = array.length; | |
if (value < array[0] || value > array[len - 1]) { | |
result = -1; | |
}else { | |
for (var i:int = 0; i < len; i++) { | |
if (value >= array[i] && value < array[i + 1]) { | |
result = i; | |
}else if (value == array[len-1]) { | |
result = len - 2; | |
} | |
} | |
} | |
return result; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment