这不是最小/最大值!
我将Array
与0, 1, 2, 1000, -1, -100
等各种索引一起使用。是的,否定指数(我喜欢这个功能,我很感激。)。问题是我需要他们消极,否则我将不得不移动所有项目。现在我想知道如何检索像-100
这样的最小索引。 min和max索引之间的大多数元素都是undefined
。
var a: Array = new Array();
a[-100] = "hello";
a.forEach(...); // starts with 0
有没有一种简单的方法来获得最小指数?
答案 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);
}
}