2012-06-14 9 views
18

Duplicar posible:
Remove specific element from a javascript array?¿Eliminar objeto de una matriz de JavaScript?

Específicamente I tiene una matriz de la siguiente manera:

var arr = [ 
    {url: 'link 1'}, 
    {url: 'link 2'}, 
    {url: 'link 3'} 
]; 

Ahora que desea eliminar valiosa url elemento de "enlace de 2" y después de la eliminación las únicas matrices de la siguiente manera:

arr = [ 
    {url: 'link 1'}, 
    {url: 'link 3'} 
]; 

Entonces, ¿quién puede ayudarme con este problema? una gran cantidad

+4

No creo que este sea un duplicado directo de esa pregunta. En la otra pregunta solo se usa un valor primitivo. 'indexOf' ** ** no funcionará aquí. Entonces, a menos que el índice sea (siempre) conocido, falta un fragmento del rompecabezas con 'empalme' ... –

+0

Ya he visto esta pregunta muchas veces. –

+0

'arr.filter (function (element) { return (element.url === 'link 2'? False: true); })' –

Respuesta

3

Gracias Utilice la función de empalme para eliminar un elemento de una matriz:

arr.splice(1, 1); 

Si desea eliminar un elemento de la matriz sin conocer el índice basado en una propiedad de elementos, tendrá para iterar sobre la matriz y cada propiedad de cada elemento:

for(var a = 0; a < arr.length; a++) { 
    for(var b in arr[a]) { 
     if(arr[a][b] === 'link 2') { 
      arr.splice(a, 1); 
      a--; 
      break; 
     } 
    } 
} 
17

Podría hacer un filtro.

var arr = [ 
    {url: "link 1"}, 
    {url: "link 2"}, 
    {url: "link 3"} 
]; 

arr = arr.filter(function(el){ 
    return el.url !== "link 2"; 
}); 

PS:Array.filter método se mplemented en JavaScript 1.6, con el apoyo de la mayoría de los navegadores modernos, Si para soportar el navegador de edad, se podría escribir su propio uno.

+3

Por favor, incluya los requisitos ... no todos son tan afortunados de tener tales función (sin una cuña). –

+0

@pst Sí, agregado. – xdazz

+0

¡Perfecto, me ayudó a repartir! –

Cuestiones relacionadas