如果数值等于,则从数组中删除项目

时间:2012-08-31 07:25:11

标签: arrays actionscript-3

我有一系列数字:

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

如果我想删除发言,34567是否有一种干净有效的方法呢?我猜我需要循环遍历数组,获取该值的位置,然后拼接该位置。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

如果您有多次出现34567,可以使用Array method 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
    }
)

答案 2 :(得分:-2)

坚持下去,想到这个:

public function ArrayFinder() 
    {   
        var i:int =  (myArray.indexOf(34567));
        splice(i, 1);
    }