我试图比较两个不同阵列中两点的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函数,我只是不知道如何在这里应用它。
答案 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。
希望对你有所帮助。