0

私は数字の配列を持っています:

var myArray:Array = [12345, 23456, 34567, 45678];

たとえば削除したい場合、34567それを行うためのクリーンで効率的な方法はありますか?配列をループしてその値の位置を取得し、その位置を接続する必要があると思います。

4

3 に答える 3

3

Array.indexOf値を配列内で見つけることができるインデックスを確認するために使用できます。見つからない場合は、になります-1。私の例では、インデックスがになるまでループと削除を続けます-1

function removeFromArray(list:Array, value:*):void
{
    if (!list || !list.length) return;
    var index:int;
    while((index = list.indexOf(value)) > -1)
    {
         list.splice(index, 1);
    }
}

// test scenario

var myArray:Array = [12345, 23456, 34567, 45678, 34567];

trace("before:" + myArray);
//before:12345,23456,34567,45678,34567

removeFromArray(myArray, 34567);

trace("after:" + myArray);
//after:12345,23456,45678
于 2012-08-31T10:50:03.317 に答える
2

34567が複数回出現する場合は、Arrayメソッドfilter()を使用して配列をフィルター処理できます。

var myArray:Array = [12345, 23456, 34567, 45678, 34567]; // 34567

myArray = myArray.filter(
    function ( item : int, index : int, array : Array ) : Boolean {
        return ( item != 34567 ); // return true if item is not 34567
    }
)
于 2012-08-31T08:57:55.147 に答える
-2

ちょっと待って、これについて考えてみてください:

public function ArrayFinder() 
    {   
        var i:int =  (myArray.indexOf(34567));
        splice(i, 1);
    }
于 2012-08-31T07:26:40.973 に答える