zoukankan      html  css  js  c++  java
  • 用for each删除数组元素的问题

    且看代码:

    var arr:Array = [1,1,1,1,3,5,1,4,7,1,1];
    var myArr:Array = [];
    var j:int;
    var i:Object;
    var tmpO:Object;
    var TV:Function = function(arr:Array):void{
        var txt:String="";
        if(arr){
            for(var i:int=0;i<arr.length;i++){
                txt+=(arr[i].value+",");
            }
            trace(txt);
        }
    };
    for(j=0;j<arr.length;j++){
        tmpO = new Object();
        tmpO.value = arr[j];
        myArr.push(tmpO);
    }
    TV(myArr);
    for each(i in myArr){
        if(i.value==1){
            myArr.splice(myArr.indexOf(i),1);
        }
    }
    TV(myArr);

    其实最重要的莫属这段了,出问题的也是这段:

    for each(i in myArr){
        if(i.value==1){
            myArr.splice(myArr.indexOf(i),1);
        }
    }

    只要两个连着的1,较后面的那个1就删不掉,这问题遇见很多年了。今天为证明给别人看,也为了巩固自己的记忆。记录于此。解决如下:

    //用这段替换掉上面的for each
    for(j=0;j<myArr.length;j++){
        i = myArr[j];
        if(i.value==1){
            myArr.splice(myArr.indexOf(i),1);//其实这里可以更简单,懒得写了
            j--;
        }
    }

    结束。

  • 相关阅读:
    Java IO流
    Java中Char和Byte的区别
    Java常用类
    View
    3 View
    View
    3 View
    3 View视图 URLconf
    2 Model层
    2 Model层-模型成员
  • 原文地址:https://www.cnblogs.com/ShepherdIsland/p/2665433.html
Copyright © 2011-2022 走看看