Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Adobe Flex/Actionscript-阵列集合的最小值和最大值_Apache Flex_Actionscript_Adobe - Fatal编程技术网

Apache flex Adobe Flex/Actionscript-阵列集合的最小值和最大值

Apache flex Adobe Flex/Actionscript-阵列集合的最小值和最大值,apache-flex,actionscript,adobe,Apache Flex,Actionscript,Adobe,我有一个从httpService调用派生的ArrayCollection,其中XML如下所示: 约翰5.5 约翰7.2 约翰3.2 我知道如何在数组中使用Math.min和Math.max,但如何在本例中仅获得高度的最小值和最大值?谢谢 您是否已经在ArrayCollection中存储了数据? 如果是,请使用调试器查看集合的结构。 在这之后,它应该像在集合中循环一样简单,并找到最小值和最大值。如果数据像myAC[0]['height'],myAC[1]['height']等,你就不能使用数学

我有一个从httpService调用派生的ArrayCollection,其中XML如下所示:


约翰5.5
约翰7.2
约翰3.2

我知道如何在数组中使用Math.min和Math.max,但如何在本例中仅获得高度的最小值和最大值?谢谢

您是否已经在ArrayCollection中存储了数据? 如果是,请使用调试器查看集合的结构。 在这之后,它应该像在集合中循环一样简单,并找到最小值和最大值。如果数据像myAC[0]['height'],myAC[1]['height']等,你就不能使用数学方法了。

我只会使用按高度排序的方法。然后只需从
ArrayCollection
中的第一个和最后一个记录中获取高度值

更新:

我将添加shaunhusain的解决方案,因为注释中的代码格式不是最好的

public var minValue:int = int.MAX_VALUE; 
public var maxValue:int = -1; 

for each (var o:Object in myArrayCollection)
{
  if (o.height > maxValue)
    maxValue = o.height;

  if (o.height < minValue)
    minValue = o.height;
}
public var minValue:int=int.MAX\u值;
公共变量maxValue:int=-1;
对于每个(变量o:myArrayCollection中的对象)
{
如果(o.height>maxValue)
最大值=o.高度;
如果(o.高度<最小值)
最小值=o.高度;
}

您是否有ArrayCollection?还是XML?ArrayCollection的每个元素都是数据对象吗?每个数据对象都有三个标签和三个高度吗?我在ArrayCollection中有数据。我的ArrayCollection的每个元素都是一个数据对象。对不起,我对结构不是很清楚。数据是父母;只有一个数据以及标签和高度的每个“记录”圆锥曲线。我不知道这是否更清楚。@user677325我不理解,可能是因为我缺乏使用XML的经验。在您的示例中,“data”标记有三个标签子项和三个高度。那么,给定该数据结构,最终将得到一个只有一个元素的ArrayCollection?但是,我不确定你将如何访问它;因为data.label会返回哪个值?对不起,这可能是我的错,因为我对术语不太熟悉。在我的例子中,有三个元素。我可以在两列数据网格中查看标签和高度。我想知道是否有可能从ArrayCollection创建一个仅高度为3项的数组。虽然这不是最有效的解决方案,但它肯定很简单并实现了目标,或者您可以遍历列表,只需执行两个比较和条件赋值,它应该比排序快一点。int minValue=-1;int maxValue=int.MAX_值;在循环中,如果(minValuecurrentValue)maxValue=currentValue,则从i到长度遍历集合;还要注意的是,如果使用排序,如果对象是字符串,则可能需要解析float,这样就不会进行字母排序。@shaunhusain,手动循环通过
数组集合
比使用
排序
更有效?我从来没有比较过两者,看哪一个更好。我一直认为,由于
Sort
是一种原生方法,它将比常规的
for
循环优化或更有效。不过,在
parseFloat
上调用得不错。我假设高度已经被输入为一个数字。我不完全确定,但基于此,我非常确定我是对的,只是在集合中循环n次,而不是在同一时间进行排序的理想情况(大多数情况下并不理想)。我还没有真正测试过这句话,但理论上它似乎是对的。作为一个坚持者,您还可以将o.height设置为一个局部变量,以减少去引用,但老实说,我不确定有多少低级优化适用于AS3。谢谢你写出来。这是我推荐的方法,尽管我不确定数据结构是什么。
public var minValue:int = int.MAX_VALUE; 
public var maxValue:int = -1; 

for each (var o:Object in myArrayCollection)
{
  if (o.height > maxValue)
    maxValue = o.height;

  if (o.height < minValue)
    minValue = o.height;
}