1

尽管 Flash 技术正在消亡,但我仍然必须完成我的项目 :)))

如何在 AS3 中为每个循环实现,它为我提供数组中元素的索引,就像 jquery each() 函数一样

jQuery.each( collection, callback(indexInArray, valueOfElement) )

我用这个

for each(var myObj:* in myArray)
{ 
     // do some stuff with myObj
}

如何在每个中使用这样的 myArray.splice(index, 1) 状态?

或者有可能吗?

4

6 回答 6

3

jQuery.each()只是一个对象迭代器,它为您做一些额外的检查。您应该能够摆脱如下语法:

var i = 0;
for ( property in object ) {
    callback( i++, object[property] )
}

虽然,我不知道 AS3 是如何工作的,但请记住,JavaScript 中的对象属性没有顺序。

于 2013-04-25T07:51:23.863 回答
3

这会奏效。

var arr:Array = new Array();
arr[1] = true;
arr[5] = true;
arr.forEach(function (item:*, index:int, array:Array)
{
    if(item != undefined)
    {
        callback(index, item);          
    }        
});
于 2013-04-25T08:44:17.203 回答
2

为什么不使用属于 Array 对象的forEach函数,该函数将对数组中的每个项目执行一个函数。

这是一个使用它的实时示例:http ://wonderfl.net/c/mLhCM

前任:

var ar:Array = ["hello", 1, "world", 2];
ar.forEach(
   function(elm:*, index:int, arr:Array):void {
            trace("got elm : "+elm+" at index : "+index);
   }
);
于 2013-04-25T08:42:42.273 回答
2

为什么不简单for...in循环:

var arr:Array = [2,1,5,0,0,0,87,8,110];

for (var i:String in arr)
{
    trace("Value:" + arr[i] + " at " + i);
}
于 2013-04-25T08:43:58.273 回答
1

不应使用“for each”来遍历索引数组,应使用标准 for(var i=0;xxx;xxx)。
如果由于某种原因您仍然发现自己需要一个 for each 循环,那么这就是获取索引的方法

var arr:Array = ['00','11','22','33','44','55','66','77','88','99']
for each(var o:Object in arr){
    trace(arr.indexOf(o))
}

另一种选择是使用 for in 循环

for (var key:String in arr){
    trace(key)
}
于 2013-04-25T14:12:33.177 回答
1

你的意思是这样的吗?

for(var i:int=0; i<myArray.length; i++){
    var myObj = myArray[i];
}

除非您指定要实现的目标,否则很难确切知道要使用什么:)

于 2013-04-25T08:45:07.680 回答