AS-3 - 如何获得Array的最小/最大INDEX

时间:2013-09-22 14:09:24

标签: arrays actionscript-3 flash indexing

这不是最小/最大值!

我将Array0, 1, 2, 1000, -1, -100等各种索引一起使用。是的,否定指数(我喜欢这个功能,我很感激。)。问题是我需要他们消极,否则我将不得不移动所有项目。现在我想知道如何检索像-100这样的最小索引。 min和max索引之间的大多数元素都是undefined

var a: Array = new Array();
a[-100] = "hello";
a.forEach(...); // starts with 0

有没有一种简单的方法来获得最小指数?

2 个答案:

答案 0 :(得分:2)

不,没有简单的方法来获得负键的最小索引。你必须循环遍历所有键,将它们转换为数字,并获得最低值。

原因在于您将数组用作数组和对象。该数组只有具有正索引的项目,当您使用负索引为其指定任何内容时,它将作为属性添加到数组对象中,而不是作为数组中的项目。

forEach方法循环遍历数组中的项,因此它只会访问正索引。使用负索引添加的数据不是数组项,它们是数组对象的属性。因此,forEach方法不是从索引0开始的错误。

如果要遍历存储在数组中的所有内容,可以循环遍历其属性,然后您将获得对象属性和数组项:

for (i in a) {
  // Here i is the key, and a[i] is the value
}

答案 1 :(得分:1)

AS3阵列中的负索引确实如此。问题(这是一个非常严重的问题)是没有一种Array方法识别出负指数 - 它们只识别整数。

例如:

var my_array:Array = new Array();

var my_array[-100] = "hello";

trace(my_array[-100]) // hello
trace(my_array.length) // 0
trace(my_array) // [empty]

因此,只能通过对索引的绝对引用来完成对数组的标准迭代。或者在循环时将数组视为Object:

var lowest:int = -100000 /* some deep number */

for(var i in a){

  if(int(i) < lowest){

    lowest = int(i);

  }
}