在For循环中访问Array中的项索引

时间:2013-04-22 19:34:46

标签: actionscript-3

我有一个看起来像这样的数组:

public var meatItems:Array = [{label: "None", data: 0},
                              {label: "Chicken", data: 1},
                              {label:"Beef", data: 2},
                              {label: "Ham", data: 3},
                              {label: "Lamb", data: 4},
                              {label: "Pork", data: 5},
                              {label: "Sausages", data: 6},
                              {label: "Venison", data: 7},
                              {label: "Turkey", data: 8},
                              {label: "Duck", data: 9},
                              {label: "Fish", data: 10}];

我想循环遍历此数组中的每个项目,并通过使用该特定项填充TextField的.text属性将其插入到滚动列表中。

var i:Number;
for (i=0;  i < meatItems.length; i++) {
    itemTextField.text = meatItems[i].toString();
    _item = new Item();
    _item.addChild(_itemTextField);
    _item.y = i * _itemPosition;
}

我知道很简单,但我已经多年来一直在努力,并没有找到任何答案

当我运行它时,它只显示一个项目并显示[object Object]而不是文本

编辑:我已经意识到我需要放_itemTextField.text = meatItems[i].label.toString();来修复文本问题,但它仍然只显示一个项目,我的循环出了什么问题?

1 个答案:

答案 0 :(得分:1)

meatItems[0](例如)是{label: "None", data: 0}。那是一个对象。使用toString方法将对象转换为字符串时,无论内容如何,​​对象都表示为[object Object]。如果你想要一个更有用的输出,你需要自己构建它。

例如:

_itemTextField.text = meatItems[i].label + '(' + meatItems[i].data + ')';
  

[...]但它仍然只显示一个项目,我的循环出了什么问题?

另一个问题是您遍历数组,并继续将文本字段的text属性设置为当前项。这意味着您将在每次迭代中覆盖旧值,并且只保留最后一次。如果你想将它们全部放在文本字段中,你可以例如附加新文本(这里每个项目末尾都有一个分隔逗号 - 这意味着最后会有一个尾随逗号,你可能想要剥离):

_itemTextField.text += meatItems[i].label +  ', ';