【问题标题】:jquery each() function in AS3AS3 中的 jquery each() 函数
【发布时间】:2013-04-25 07:37:20
【问题描述】:

虽然闪存技术正在消亡,但我仍然必须完成我的项目 :)))

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

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

我用这个

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

如何在每个中使用类似 myArray.splice(index, 1) 的 stateme?

或者有可能吗?

【问题讨论】:

    标签: javascript jquery actionscript-3 flash apache-flex


    【解决方案1】:

    这会奏效。

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 是的,我知道这个解决方案。问题是避免使用创建单独的索引,如 i、j、k、t 等... :))
      • 您是要遍历数组还是对象?数组应该有 int 键,所以你有索引?
      • Array确实是As3中的一个数组。对象具有整数索引。但是 AS3 数组是稀疏数组,所以 midlle 中的对象可以像这样 arr[0] = obj1 , arr[1] = undefined arr[2] = obj2
      • 在 as3 中,我们使用 Object 和 JSON 语法,例如 {"index1": value1, index2":value2}
      • 但无论如何我想在 AS3 中没有办法做到这一点,而不使用单独的索引计数器
      【解决方案3】:

      为什么不使用属于 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);
         }
      );
      

      【讨论】:

        【解决方案4】:

        为什么不简单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);
        }
        

        【讨论】:

          【解决方案5】:

          你的意思是这样的吗?

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

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

          【讨论】:

            【解决方案6】:

            不应使用“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)
            }
            

            【讨论】:

            • 你说你不应该对阵列上的每个都使用的理由是什么?
            猜你喜欢
            • 2010-10-12
            • 2012-09-10
            • 2010-11-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多