遇到一个问题,这个问题应该很简单。 我不断用新值更新数组,因此我需要获得最低值和最高值之间的差值或差值。阵列的长度应保持恒定在10。 问题是我的delta数组的第一个和最后一个值似乎只有变化。我错过了什么?
虽然在AS3中,在Java或Javascript中应该几乎相同
private var _deltaArray:Array= new Array();
private function update(myVal:int):void{
if (_deltaArray.length < 10) {
_deltaArray.push(myVal);
}
if (_deltaArray.length >= 10) {
_deltaArray.push(myVal);
var delta:int =getDelta(_deltaArray);
_deltaArray.shift();
}
}//end func
private function getDelta(a:Array):int {
var total:Number=0;
var L:int=a.length
if (L > 1) {
a.sort(Array.NUMERIC);
var delta:int=int(a[0]) - int(a[L - 1]);
trace('getDelta delta= ' + delta);
}
return delta;
}//end func
答案 0 :(得分:0)
这只是一个建议,但为什么不保持delta的运行计数?我只能用伪代码编写代码,但是:
private double max = Double.MIN;
private double min = Double.MAX;
private void update(integer value) {
array.push(value);
max = value > max ? value : max;
min = value < min ? value : min;
if (array.length > 10) {
array.shift();
}
}
private int delta() { return max - min; }
答案 1 :(得分:0)
找到答案。 在对其进行排序以检索delta值
之前,我需要克隆我的数组