var arr=['a','b','c','',,,,,];
replaceEmptyItem(arr);
function replaceEmptyItem(arr){
for(var i=0,len=arr.length;i<len;i++){
if(!arr[i]|| arr[i]==''){
arr.splice(i,1);
len--;

}
}
}
这样仍然不对,求助。

解决方案 »

  1.   

    var arr=['a','b','c','',,,,,];
    replaceEmptyItem(arr);
    function replaceEmptyItem(arr){
        for(var i=0,len=arr.length;i<len;i++){
            if(!arr[i]|| arr[i]==''){
                arr.splice(i,1);
                len--;
                i--;
            }
        }
    }
      

  2.   

    len--;i--;
    不过这样容易出错,看起来还很乱。试试从后往前循环
    for(var i=(arr.length-1); i>=0; --i){
      

  3.   


    Array.prototype.dels=function(n) {  
        if(n<0)
    return this;
     else
        return this.slice(0,n).concat(this.slice(n+1,this.length));
       
    }
    var arr=['a','b','c','',,,,,'e','g',,,,];
    replaceEmptyItem(arr);
    function replaceEmptyItem(arr){
        for(var i = arr.length-1;i>=0;i--){

            if(arr[i] =="undefined"|| arr[i]=="" ||!arr[i]){

               arr = arr.dels(i);
            }

        }
    alert(arr.join(","));
    }
      

  4.   


    Array.prototype.del=function(n) {
      if(n<0)
        return this;
      else
        return this.slice(0,n).concat(this.slice(n+1,this.length));
    }var arr=['a','b','c','',,,,,];function replaceEmptyItem(arr){
        for(var i=0,len=arr.length;i<len;i++){
          if(!arr[i]|| arr[i]==''){
          arr=arr.del(i);
          len--;
          i--;
          }
          }
          return arr;}
    alert(replaceEmptyItem(arr));
      

  5.   

    var arr = ['a', 'b', 'c', '', , , , , ];
    var newArr = new Array();
    function replaceEmptyItem(arr) {
        for (var i = 0,
        len = arr.length; i < len; i++) {
            if (arr[i] && arr[i] != '' && arr[i] != undefined) {
                newArr.push(arr[i]);
            }
        }
    }
    换种方式来执行,在i=4以后的类型,是属于undefined,你缺少了这种判断
      

  6.   

    噢,上面错了,!arr[i],有了undefined!
    1楼的是对的~  要加i--