在多维数组AS3中使用pop函数

时间:2014-05-15 15:06:49

标签: arrays actionscript-3 multidimensional-array

我希望能够做的是让我的函数在我的数组列表中找到数组的索引并删除它。我希望找到存储在其中的两个第一个插槽(0和1)中存储的数组内的人的名字和姓氏(例如:example [0] = [“Robert”,“Brown”,1000 ,2100,600,400];)并从我的数组列表中删除它(整个元素[0])。这是我现在的清单:

voyageur[0]=["Roger", "Dagenais", 1000, 2100, 600, 400];
voyageur[1]=["Phil", "Thomas", 200, 300, 1400, 800];
voyageur[2]=["Nikolas", "Brideau", 1000, 2000, 3000, 5000];

现在让我说我要从我的数组中删除Phil Thomas(元素#1)。我该怎么做?

function supprimer(event:MouseEvent):void {

var indiceVoyageur:int;
var indiceVoyageurPrenom:int;
var indiceVoyageurNom:int;

if ( (boitePrenom.text != "") && (boiteNom.text != "") )
     {
        for (var rang:int = 0; rang < voyageur.length; rang++)
        {
        indiceVoyageurPrenom = (voyageur[rang][0].indexOf(boitePrenom.text));
        indiceVoyageurNom = (voyageur[rang][1].indexOf(boiteNom.text));

        if (indiceVoyageurPrenom != -1)
        {
            for (var i=indiceVoyageur; i <voyageur.length; i++)
            {
                voyageur[i] = voyageur[i+1];
            }
            voyageur.pop();
        }
        }
     }
  }

这是我之前制作的一些代码,但它并没有真正正常工作。如果你有另一种做我想做的事情的方式,那也没关系。

感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

您可以使用splice

,而不是随机播放和弹出
function supprimer(): void {

    var indiceVoyageur: int;
    var indiceVoyageurPrenom: int;
    var indiceVoyageurNom: int;

    if ((boitePrenom.text != "") && (boiteNom.text != "")) {
        for (var rang: int = 0; rang < voyageur.length; rang++) {
            indiceVoyageurPrenom = (voyageur[rang][0].indexOf(boitePrenom.text));
            indiceVoyageurNom = (voyageur[rang][1].indexOf(boiteNom.text));

            if (indiceVoyageurPrenom != -1 && indiceVoyageurNom != -1) {
                voyageur.splice(rang, 1);
                break;
            }
        }
    }
}

答案 1 :(得分:0)

我无法准确理解你的代码,因为它似乎与一些奇怪的变量有关..但这应该有效:

function clear(firstName:String, lastName:String):Boolean {
    var total:uint = _users.length;
    // _users is a member variable of the users array
    // you can pass it to the function if you don't like it to be member

    var found:Boolean;

    for (var i:uint = 0; i < total; i++) {
        var data:Object = _users[i];

        if (data.indexOf(firstName) != -1 && data.indexOf(lastName) != -1) {
            data.splice(i, 1);
            i--; // keep searching for other items in the array
            found = true;
        }
    }

    return found; // return true if it finds it
}

答案 2 :(得分:0)

这将满足您删除这些元素并返回输出的需要。不需要循环。直接使用数组方法max进行优化。

var voyageur1:Array=["Roger", "Dagenais", 1000, 2100, 600, 400];


var voyageur2:Array=["Phil", "Thomas", 200, 300, 1400, 800];

var voyageur3:Array=["Nikolas", "Brideau", 1000, 2000, 3000, 5000];

var voyageur4:Array=voyageur2.splice(0,2);

trace(voyageur4); //Phil,Thomas

trace(voyageur2); //200,300,1400,800[after deleting].

希望你期待这一点。