0

在获得应该很容易工作的东西时遇到问题。我不断用新值更新数组,因此我需要获取最低值和最高值之间的增量或差异。数组的长度应该保持在 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
4

2 回答 2

0

这只是一个建议,但为什么不记录你的增量呢?我只能用伪代码对此进行编码,但是:

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; }
于 2013-02-05T21:19:28.550 回答
0

找到了答案。我需要先克隆我的数组,然后再对其进行排序以检索增量值

于 2013-02-05T22:05:34.043 回答