从不断更新的数组中获取数组值的增量

时间:2013-02-05 20:26:41

标签: arrays actionscript-3 ecmascript-5

遇到一个问题,这个问题应该很简单。 我不断用新值更新数组,因此我需要获得最低值和最高值之间的差值或差值。阵列的长度应保持恒定在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

2 个答案:

答案 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值

之前,我需要克隆我的数组