我有一个看起来像这样的数组:
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();
来修复文本问题,但它仍然只显示一个项目,我的循环出了什么问题?
答案 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 + ', ';