AS3:那个最小值不是0?

时间:2015-05-19 09:24:48

标签: actionscript-3 flash

我有一个问题: 有什么办法可以找到一个非0的数组的最小值?让我们说我有这个数组:

{0,2,0,0,1}我希望它能找到1.

1 个答案:

答案 0 :(得分:1)

在找到最小包括零时,应该只是略有不同。这可以通过将最小值设置为第一个值然后遍历所有其他值来实现,如果数组中的值较低,则替换最小值。

对于您的场景,需要进行的修改只是忽略值为零的修改。这样的事情应该做:

var numbers:Array = [0,2,0,0,1];
var started:Boolean = false;
var minval:Number = 0;

for each (var num:Number in numbers) {
    if ((!started) && (num != 0)) {
        started = true;
        minval = num;
    }
    if ((started) && (num != 0) && (num < minval)) {
        minval = num;
    }
}

在您找到第一个非零值之前,第一个if语句将是唯一执行的语句,此时您将设置started并将该数字存储为最小值。

从那时起(包括在那次迭代中),你只需检查非零数字,看看它们是否更少,如果存在则存储它们。

最后,startedfalse,在这种情况下,没有非零数字,或startedtrueminval将保留最小的数字。