在Actionscript 3中从2个数组中创建1个关联数组

时间:2014-03-20 06:13:54

标签: arrays actionscript-3

如何制作1个具有第一个数组&的键的数组?它的值是Actionscript 3.0中第二个数组的值?

下面是我的[错误]代码。包导入遗漏了。

public class myPages extends Sprite {
    protected var pageNames:Array = [];
    protected var pageLayoutNo:Array = [];
    private var pageLayoutNames:Object = new Object();


    public function assignNamesLayouts {

        //all the names of the pages
        for(i=0; i<totalPages; i++) {
            var pageMc:MovieClip=new MovieClip();
            pageMc.name = menu.config.pages.page[i].@name;
            pageNames[i]= pageMc.name;
        }

        //all layout numbers
        for(i=0; i<totalPages; i++) {
            pageLayoutNo[i] = menu.config.layoutNum.layNum[i];
        }

    setNames(pageNames);
    setPLNo(pageLayoutNo);
    setLayoutNames(pageLayoutNo,pageNames);

    }

    protected function setNames(a:Array) {
        pageNames = a;
    }

    protected function setPLNo(a:Array) {
        pageLayoutNo = a;

    }

    protected function setLayoutNames(a:Array, b:Array) {
        var maps:Object = new Object();
        maps.no = a;
        maps.nm = b;
        for each(var k:int in a) {
           maps[k] = b;
        }
    }
}

谢谢。

2 个答案:

答案 0 :(得分:0)

字典确实是你想要的,但你可以通过创建一个像这样的对象数组来实现:

var newArray=combineArrays("name", arr1,"number",arr2);
function combineArrays(name1, arr1,name2, arr2){
 var newArr=new Array();
 for(var i<arr1){
  var obj=new Object();
  obj[name1]=arr1[i];
  obj[name2]=arr2[i];
  newArr.push(obj);
 }
}

然后,您可以搜索任一对象的对象名称或值。

答案 1 :(得分:0)

我同意@Vesper。 associative array的最近解决方案是Dictionary。我还会为你添加一些想法。如果您的集合将键作为字符串,则可以使用简单的对象:

var keyName: String = "key1";
var anotherKey: String = "key2";
var collection: Object = {};
collection[keyName] = new MovieClip();
collection[anotherKey] = new Sprite();

trace(collection[keyName]);

如果你想使用2个数组:一个用于键,另一个用于值,你需要几个函数(用键放置对象,按键获取对象,按值获取对象,按键删除对象等)到管理它们,因为数组中的索引必须相同。