/ / unset javascript array para - javascript, unset, splice

unset javascript array para - javascript, unset, splice

Eu tenho tentado isso por horas e achei que seria muito simples;

Usando o javascript eu basicamente quero iteraratravés de uma matriz, obter o valor atual do índice e, em seguida, desmarque esse valor da matriz. Eu encontrei splice () deve funcionar para isso no entanto não parece ser capaz de esvaziar a matriz, há sempre um valor à esquerda no arrary

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

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

EDITAR::

Vou tentar explicar um pouco mais detalhadamente:

Eu estou basicamente tentando manter o controle de uma lista de valores de classe selecionados que são obtidos a partir de quando um item é clicado: var filtrado = 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);
});
}


}

Respostas:

1 para resposta № 1

Se você quiser esvaziar a matriz, configure-a para ser uma matriz vazia diretamente:

filtered = [];

Se você quiser usar os valores antes de esvaziar a matriz, simplesmente faça uma iteração antes disso sem remover valores e limpe-a quando terminar.

O que você ganha ao brincar com soluções complicadas?


0 para resposta № 2

a matriz foi definida incorretamente. É por isso que o código não excedeu

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

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

0 para resposta № 3

Para remover itens um por um:

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

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

http://jsfiddle.net/89hkH/


0 para a resposta № 4

Bem, você está incrementando. Já tentou decrementar?

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

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

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

Isso deve garantir que o elemento final seja dividido.


0 para a resposta № 5

Eu basicamente quero iterar através de uma matriz, obter o valor atual do índice e, em seguida, desmarque esse valor da matriz.

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

Eu não acho que você está claramente definindo (ou talvez não saiba), o que você está tentando fazer.

Você está tentando escrever um pop(n) método tal que:

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

Ou você está apenas tentando andar em uma matriz e obter o primeiro elemento fora de cada vez? Se assim for, você está fazendo errado. Isso é apenas um mudança()

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