我有一个数字数组:从阵列中删除项目,如果它的值等于
var myArray:Array = [12345, 23456, 34567, 45678];
如果我想删除说,34567
是有一个干净有效的方式来做到这一点?我猜我需要遍历数组,获取该值的位置,然后拼接该位置。
我有一个数字数组:从阵列中删除项目,如果它的值等于
var myArray:Array = [12345, 23456, 34567, 45678];
如果我想删除说,34567
是有一个干净有效的方式来做到这一点?我猜我需要遍历数组,获取该值的位置,然后拼接该位置。
你可以使用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
死守,只是想到这一点:
public function ArrayFinder()
{
var i:int = (myArray.indexOf(34567));
splice(i, 1);
}
如果你有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
}
)
如果在数组中找不到该值,可能会导致错误。总是检查索引> -1。你不能只调用拼接,它应该是myArray.splice()。顺便说一下,ArrayFinder是这个函数的一个坏名字,并没有描述发生了什么。 –