Apache flex Flex:在数组中循环
我试图构建一个数组数组,该数组将使用以下语法。我的产出肯定不是我想要达到的。这是我的密码:Apache flex Flex:在数组中循环,apache-flex,multidimensional-array,Apache Flex,Multidimensional Array,我试图构建一个数组数组,该数组将使用以下语法。我的产出肯定不是我想要达到的。这是我的密码: var labs:ArrayCollection = new ArrayCollection(); var sets:ArrayCollection = new ArrayCollection(); var labsArray:Array = ["ProDPI","WHCC","Tin"]; var setsArray:Array = ["Set1","Set2","Set3"]
var labs:ArrayCollection = new ArrayCollection();
var sets:ArrayCollection = new ArrayCollection();
var labsArray:Array = ["ProDPI","WHCC","Tin"];
var setsArray:Array = ["Set1","Set2","Set3"];
var folders:ArrayCollection = new ArrayCollection();
var foldersArray:Array = [labsArray, setsArray];
var objFolderBuild:Object = new Object;
for (var i:int = 0; i< foldersArray.length;i++) {
for (var j:int = 0; j < foldersArray[i].length; j++) {
objFolderBuild.labName = foldersArray[i][j];
folders.addItem(objFolderBuild);
}
}
labFolderList.labelField="labName";
labFolderList.dataProvider=folders;
setFolderList.labelField="setName";
setFolderList.dataProvider=folders;
var-labs:ArrayCollection=newarraycollection();
变量集:ArrayCollection=new ArrayCollection();
var labsArray:Array=[“ProDPI”、“WHCC”、“Tin”];
var setsArray:Array=[“Set1”、“Set2”、“Set3”];
var folders:ArrayCollection=newarraycollection();
var foldersArray:Array=[labsArray,setsArray];
var objFolderBuild:Object=新对象;
for(变量i:int=0;i
我的输出是6次引用“Set3”。我的for循环显然有问题,但我无法解决。任何想法都会大有帮助。我创建了这个快速应用程序,以证明您的代码正确地跟踪了foldersArray[I][j]。90%的代码来自你的应用程序 但是,我想指出,
objFoldersBuild
对象只创建一次。因此,每次通过循环都要更改现有对象属性的值,并将其添加到文件夹ArrayCollection中。您有一个ArrayCollection,其中包含同一对象的多个副本。答案是每次通过循环时创建一个新对象
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" preinitialize="windowedapplication1_preinitializeHandler(event)">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
protected function windowedapplication1_preinitializeHandler(event:FlexEvent):void
{
var labs:ArrayCollection = new ArrayCollection();
var sets:ArrayCollection = new ArrayCollection();
var labsArray:Array = ["ProDPI","WHCC","Tin"];
var setsArray:Array = ["Set1","Set2","Set3"];
var folders:ArrayCollection = new ArrayCollection();
var foldersArray:Array = [labsArray, setsArray];
var objFolderBuild:Object = new Object;
for (var i:int = 0; i< foldersArray.length;i++) {
for (var j:int = 0; j < foldersArray[i].length; j++) {
trace(foldersArray[i][j]);
objFolderBuild = new Object;
objFolderBuild.labName = foldersArray[i][j];
folders.addItem(objFolderBuild);
}
}
/* labFolderList.labelField="labName";
labFolderList.dataProvider=folders;
setFolderList.labelField="setName";
setFolderList.dataProvider=folders; */
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
</s:WindowedApplication>
我是否遗漏了您在代码中实际输出某些内容的点?您指的是什么输出?labFolderList.labelField=“labName”