未设置的javascript数组

时间:2012-08-15 16:44:14

标签: javascript unset splice

我一直在努力这几个小时,我觉得这很简单;

使用javascript我基本上想要遍历数组,获取索引的当前值,然后从数组中取消设置此值。我发现splice()应该适用于此但是我似乎无法清空数组,在arrary上总有一个值

var filtered = array("up", "down", "left");
 function resetTags(){
       var length = filtered.length;

       for(i=0; i <= length; i++){
            filtered.splice(i,1);
        }
    }

修改::

我将尝试更详细地解释一下:

我基本上试图跟踪所获得的所选类值的列表 从单击项目时:      var filtered = array();

    jQuery("li a").click(function () {
     tag = jQuery(this).text();
     addFiltered(tag);
});

 function addFiltered(param){
      var inArray =  jQuery.inArray(param,filtered);
      if(inArray > -1){
        //param is in array, so we want to remove it from the filtered array 
            filtered.splice(index, 1);
        });

        }else{
         //param isn't in array, so we want to add it to the array 
            filtered.splice(0, 0, param);
        });
        }


    }

5 个答案:

答案 0 :(得分:1)

如果要清空数组,请将其直接设置为空数组:

filtered = [];

如果要在清空数组之前使用这些值,只需在此之前迭代而不删除值,并在完成后清除它。

通过搞乱复杂的解决方案,你会获得什么?

答案 1 :(得分:0)

嗯,你正在增加。你试过减量吗?

var filtered = new Array("up", "down", "left");

function resetTags(){
   var length = filtered.length;

   for(i = length; i >= 0; i--){
        filtered.splice(i,1);
   }
}

这应确保拼接最终元素。

答案 2 :(得分:0)

数组定义不正确。这就是代码没有执行的原因

 var filtered = ["up", "down", "left"];
     function resetTags(){
           var length = filtered.length;

           for(i=0; i <= length; i++){
                filtered.splice(i,1);
            }
        }

答案 3 :(得分:0)

逐个删除项目:

  

var a = [1,2,3,4,5];

     

while(a.length&gt; 0){       a.splice(0,1);        }

http://jsfiddle.net/89hkH/

答案 4 :(得分:0)

  

我基本上想要遍历数组,获取当前值   索引然后从数组中取消设置该值。

for(i=0; i <= length; i++){
            filtered.splice(i,1);
        }

我认为你没有明确定义(或者可能不知道),你正在尝试做什么。

您是否尝试编写pop(n)方法,以便:

var a = [1,2,3,4]
var result = pop(3, a)
result == [ 1, 2, 4]

或者你只是想尝试走一个阵列并且每次都关掉第一个元素?如果是这样,你做错了。这只是一个shift()

 var filtered = ["up", "down", "left"]
 for(i = 0 ; i<= filtered.length; i++)
    {
       alert(filtered);
       filtered.shift();
       alert(filtered);          
    }