2012-08-31 64 views
0

我有一个数字数组:从阵列中删除项目,如果它的值等于

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

如果我想删除说,34567是有一个干净有效的方式来做到这一点?我猜我需要遍历数组,获取该值的位置,然后拼接该位置。

回答

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 
-2

死守,只是想到这一点:

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

如果在数组中找不到该值,可能会导致错误。总是检查索引> -1。你不能只调用拼接,它应该是myArray.splice()。顺便说一下,ArrayFinder是这个函数的一个坏名字,并没有描述发生了什么。 –

2

如果你有34567多个出现,你可以通过使用Array method filter()滤波器阵列agains它:

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 
    } 
)