在调用之前,在Array中检查点值

时间:2014-12-06 20:35:24

标签: arrays actionscript-3

我试图比较两个不同阵列中两点的X值。问题有时候我比较的价值可能还不存在,而且我在调用这个变量之前并不完全确定如何进行这项检查。

我的代码看起来像这样

if (blueShipPositions[0].x == redShipPositions[0].x) {
            trace("Match in" + blueShipPositions[0]);
        }

此阵列中任何给定点的x值最高为4,因此遇到的错误I' m看起来像这样

if (blueShipPositions[0].x == redShipPositions[4].x) {
            trace("true");
        }

如果redShipPositions [4] .x不存在但我收到错误。 我知道IndexOf函数,我只是不知道如何在这里应用它。

2 个答案:

答案 0 :(得分:0)

将其包装在确定数组大小的IF语句中:

if (redShipPositions.length >= 5) {
     if (blueShipPositions[0].x == redShipPositions[4].x) {
               trace("true");
     }
}

另一种方法是使用int局部变量来指示数组的大小:

myArraySize = redShipPositions.length;

然后你可以用它作为指标/(停止点)来安全地执行你的代码而不关心IndexOutOfBound异常。

答案 1 :(得分:0)

作为对你问题的回答,请举例:(内部评论)

var array:Array = new Array(1, 5, 6, 55)
var index:Number = 3

// type of the elements of array, in this case is Number
var element_type:* = Number

// so to verify if the array[index] exists, we can use

if(array[index]) {

    trace(array[index])

}

// or

if(array[index] != undefined) {

    trace(array[index])

}

// or

if(array[index] != null) {

    trace(array[index])

}

// or

if(typeof array[index] != 'undefined') {

    trace(array[index])

}

// or

if(array[index] is element_type) {

    trace(array[index])

}

// or

if(array[index] as element_type != null) {

    trace(array[index])

}

// or

// here you have to put in the mind that arrays in ActionScript starts always from the index 0, thats why we use < and not <= 
if(index < array.length) {

    trace(array[index])

}

// we use array.indexOf to search an element and not an index
if(array.indexOf(55)){

    trace('we have "55" in this array')

} else {

    trace('we don\'t have "55" in this array')

}

有关AS3 Array对象的详细信息,请查看此处:Adobe.com : AS3 Array

希望对你有所帮助。