¿Eliminar elementos de matriz con RegExp?

Tengo un montón de enlaces que se utilizan para filtrar información, ver: http://i.imgur.com/Huoqb.png

Cuando haces clic en un enlace, lo agrego a una matriz. Por ejemplo:

Venue>All = venue-0, Venue>Home = venue-1, Venue>Away = venue-2, 
Vs>All = vs-0, Vs>Lefties = vs-1, Vs>Righties = vs-2
 etc, etc, etc.

Si el usuario hace clic en "Todos" en cualquier categoría, quiero buscar en la matriz y eliminar los elementos que contengan esa categoría. Por ejemplo: myArray['venue-1','venue-2','vs-1']...hacer clic Venue>all, eliminar 'venue-1' y 'venue-2' dejarlo myArray['vs-1'].

¿Puedo hacer esto usando una expresión regular como: /^venue/ y cambiando la palabra según en qué "Todos" haga clic?

Sé que necesito hacer una combinación de $.inArray or indexOf() y splice() pero no puedo hacerlo funcionar.

preguntado el 03 de mayo de 12 a las 19:05

3 Respuestas

Puedes hacer esto simplemente con el $.grep utilidad:

var someArray = [1, 2, 3];

var numbersGreaterThanOne = $.grep(someArray, function(item)
{
    return item > 1;
});

Esto es solo una muestra, pero puede realizar cualquier devolución de llamada para filtrar los elementos que desee.

contestado el 03 de mayo de 12 a las 19:05

Entonces, ¿cómo haría esto para lo que necesito? Probé var filterIt = $.grep(filters,function(n,i){return n=/^venue/;}); pero no obtuve nada. - ksumarine

return item.indexOf('venue') == -1 ? La prueba depende de ti. - Tejas

Prueba esto:

var newList = $.filter(function () {
    return this.indexOf('venue') != 0;
});

contestado el 03 de mayo de 12 a las 20:05

Para una solución que no sea jQuery que muta la matriz en el lugar:

for (var i=myArray.length;i--;){
  if (...) myArray.splice(i,1);
}

Dónde ... es cualquier prueba que desee, como:

if (myRegeEx.test(myArray[i]))

contestado el 03 de mayo de 12 a las 20:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.