很抱歉,如果标题有点令人困惑。这就是我的意思 - 我有一个数组和对象。让我给出一个视觉:
这是我的目标:
obj["id"] = ["1","2","3"];
obj["name"] = ["na","no","ne"];
我的itemArray:
itemArray = ["id","name"];
现在,我想检索对象中的项目,我试过
for (var i:int = 0; i<objLen; i++)
{
for (var j:int = 0; j<count; j++)
{
textBox_txt.appendText(obj.arr[i][j]);
}
}
但它不起作用。我如何在数组中实际使用arr [i]变量? :■
答案 0 :(得分:0)
也许是这样的:
var array:Array;
var count:int;
for( var i:int = 0; i < itemArray.length; i++ )
{
array = obj[ itemArray[ i ] ];
count = array.length;
for ( var j:int = 0; j<count; j++ )
{
textBox_txt.appendText( array[ j ] );
}
}
答案 1 :(得分:0)
好的,我刚发现了这个。 jeremynealbrown的答案有效,但还有另一种方法:http://www.kirupa.com/forum/showpost.php?p=2596002&postcount=2
var obj = new Object();
obj["id"] = ["1","2","3"];
obj["name"] = ["na","no","ne"];
obj["sasdf"] = "asdfa asdfasdf asdf asdf af";
for (var i in obj)
{
if (obj[i] is Array)
{
for (var j:int = 0; j<obj[i].length; j++)
{
trace(obj[i][j]);
//textBox_txt.appendText(obj.arr[i][j]);
}
}
}
答案 2 :(得分:0)
基本上,使用两个[]运算符来访问嵌套数组是正确的,但是您将数组放在一起的方式令人困惑:
您的第一个对象有两个命名属性,“id”和“name”,每个包含一维数组:
var obj:Object = {
id:["1", "2", "3"],
name:["na", "no", "ne"];
}
(我使用这种表示法使事物更具可读性 - 它创建与代码相同的对象。注意{}和[]括号!)
您的itemArray是一维数组,内部只有两个字符串,但它不会出现在代码中的任何其他位置。
itemArray = ["id", "name"];
你的for循环迭代obj对象的属性“arr”,它不存在:
for (var i:int = 0; i<objLen; i++)
{
for (var j:int = 0; j<count; j++)
{
textBox_txt.appendText(obj.arr[i][j]); // obj has properties "id" and "name", but not "arr"
}
}
现在忘记上面的一切。这就是你如何做到这一点:
如果您想要二维数组,可以省略属性名称:
var arr:Array= [
["1", "na"],
["2", "no"],
["3", "ne"]
];
(注意:这有一组嵌套的[]运算符,没有{}括号!) 并像这样迭代:
for (var i:int = 0; i<arr.length; i++)
{
for (var j:int = 0; j<arr[i].length; j++)
{
textBox_txt.appendText(arr[i][j]);
}
} // output: 1na2no3ne
您还可以使用命名属性来使事情看起来更好,并且您的代码更具可读性:
var itemArray:Array = [
{id:"1", name:"na"},
{id:"2", name:"no"},
{id:"3", name:"ne"}
];
(注意[]和{}括号如何改变位置!)
这是一个一维数组,包含3个对象,每个对象都有属性“id”和“name”。然后,您可以迭代将单个对象名称附加到文本中,如下所示:
for each ( var obj:Object in itemArray) {
textBox_txt.appendText(obj.id + "" + obj.name);
} // output: 1na2no3ne