【问题标题】:unset javascript array for取消设置 javascript 数组
【发布时间】:2012-08-11 23:49:27
【问题描述】:

我已经尝试了好几个小时,我认为这真的很简单;

使用 javascript 我基本上想遍历一个数组,获取索引的当前值,然后从数组中取消设置这个值。我发现 splice() 应该可以解决这个问题,但是我似乎无法清空数组,数组上总是剩下一个值

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

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

编辑::

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

我基本上是在尝试跟踪获得的选定类值的列表 从单击项目开始: var 过滤 = 数组();

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


    }

【问题讨论】:

  • 我刚刚运行了上面的代码,并没有在数组上留下任何值。我确实将 array() 更改为 ["up", "down", "left"] 所以它可能是你的函数 array() 正在做的事情。

标签: javascript unset splice


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    var filtered = new Array("up", "down", "left");
    
    function resetTags(){
       var length = filtered.length;
    
       for(i = length; i >= 0; i--){
            filtered.splice(i,1);
       }
    }
    

    这应该确保最终元素被拼接。

    【讨论】:

      【解决方案3】:

      逐个删除项目:

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

      while (a.length > 0) { a.拼接(0,1); }

      http://jsfiddle.net/89hkH/

      【讨论】:

        【解决方案4】:

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

         var filtered = ["up", "down", "left"];
             function resetTags(){
                   var length = filtered.length;
        
                   for(i=0; i <= length; i++){
                        filtered.splice(i,1);
                    }
                }
        

        【讨论】:

        • var filtered = ["up", "down", "left"];var filtered = array("up", "down", "left"); 相同
        【解决方案5】:

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

        filtered = [];
        

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

        搞乱复杂的解决方案你能得到什么?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-14
          • 2015-02-20
          • 1970-01-01
          • 2010-09-17
          • 2012-01-10
          • 2012-12-07
          • 2012-06-17
          • 2011-11-02
          相关资源
          最近更新 更多