сбросить массив javascript для

Я пытался сделать это уже несколько часов и думал, что это будет очень просто;

Используя 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 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);
        });
        }


    }

person ddoonn    schedule 15.08.2012    source источник
comment
Я только что запустил вышеизложенное и не получил никаких значений в массиве. Я изменил array() на [вверх, вниз, влево], так что это может быть то, что делает ваша функция array().   -  person scrappedcola    schedule 15.08.2012


Ответы (5)


Если вы хотите очистить массив, установите его как пустой массив напрямую:

filtered = [];

Если вы хотите использовать значения перед очисткой массива, просто выполните итерацию перед этим, не удаляя значения, и очистите его, когда закончите.

Что вы получите, возясь с запутанными решениями?

person Jon    schedule 15.08.2012

массив был определен неправильно. Вот почему код не выполнился

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

           for(i=0; i <= length; i++){
                filtered.splice(i,1);
            }
        }
person mattnull    schedule 15.08.2012
comment
var filtered = ["up", "down", "left"]; совпадает с var filtered = array("up", "down", "left"); - person Trinh Hoang Nhu; 15.08.2012

Чтобы удалить элементы по одному:

переменная а = [1,2,3,4,5];

в то время как (a.length > 0) { a.splice(0,1); }

http://jsfiddle.net/89hkH/

person Vlad    schedule 15.08.2012

Ну, ты увеличиваешь. Пробовали уменьшать?

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

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

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

Это должно убедиться, что последний элемент соединен.

person Joel Etherton    schedule 15.08.2012

В основном я хочу перебрать массив, получить текущее значение индекса, а затем удалить это значение из массива.

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);          
    }
person Visionary Software Solutions    schedule 15.08.2012