Arrays 查找对象时出错';数组中的索引

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

我有一个具有一些属性的数组。当我试图找到一个对象的索引时,我得到了错误类型error:error#1009。我用的是Flash CS6

这是我的阵列:

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并不重要;它仍然像在函数开头声明一样进行编译。