Arrays 查找对象时出错';数组中的索引
我有一个具有一些属性的数组。当我试图找到一个对象的索引时,我得到了错误类型error:error#1009。我用的是Flash CS6 这是我的阵列:Arrays 查找对象时出错';数组中的索引,arrays,actionscript-3,flash,Arrays,Actionscript 3,Flash,我有一个具有一些属性的数组。当我试图找到一个对象的索引时,我得到了错误类型error:error#1009。我用的是Flash CS6 这是我的阵列: var squareArr:Object = { a1: { piece: wr1_txt, pieceLoc: { x: "-3", y: "347" } }, b1: { piec
var squareArr:Object = {
a1: {
piece: wr1_txt,
pieceLoc: {
x: "-3",
y: "347"
}
},
b1: {
piece: wn1_txt,
pieceLoc: {
x: "47",
y: "347"
}
},
...
下面的代码给了我错误#1009,而我希望它返回a1:
trace (squareArr.indexOf(wr1_txt));
不能对对象执行indexOf()
,而应执行属性查找循环
var s:String;
var found:Boolean=false;
for (s in squareArr) {
if (squareArr[s].piece == wr1_txt) { // YAY found it
found=true;
break;
}
}
if (found) trace(s); else trace("Not found!");
而s
将是您的索引
当然,别忘了分析错误,如果找不到目标,你不应该说最后一个索引是contais target。谢谢你的回答,对不起我的英语。我不明白“如果你的目标没有找到,你不应该说最后一个索引是什么contais目标”。trace(s)不输出任何东西。嗯,然后声明变量不在循环中,而是在它之前,这样在循环后变量仍然可以访问。但是现在说的是not found!跟踪(wr1_txt);//outputs[object TextField]ActionScript 3.0使用变量提升,所以他是在for循环内部还是外部声明一个var并不重要;它仍然像在函数开头声明一样进行编译。