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



我想要做的是让我的函数在我的数组列表中找到数组的索引并删除它。我希望它能找到一个人的名字和姓氏存储在数组中存储在它的两个第一个槽(0和1)(例如:示例[0]=["罗伯特","布朗",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();
        }
        }
     }
  }

这是我以前做的一些代码,但它并没有真正正常工作。如果你有另一种方法来做我想做的事情,那也很好。

可以直接使用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;
            }
        }
    }
}

我不能完全理解你的代码,因为它似乎有一些奇怪的变量。但这应该可以工作:

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
}

这将满足您删除这些元素并返回输出的需要。不需要循环。直接使用数组方法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].

相关内容

  • 没有找到相关文章