2012-06-14 16 views
18

Eventuali duplicati:
Remove specific element from a javascript array?Rimuovere l'oggetto da un array JavaScript?

In particolare ho una matrice come segue:

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

Ora si desidera rimuovere "link 2" prezioso elemento url e dopo la rimozione gli unici array come segue:

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

Quindi chi può aiutarmi questo problema? Grazie mille

+4

Non penso che questo sia un duplicato diretto di quella domanda. Nell'altra domanda viene utilizzato solo un valore primitivo. 'indexOf' ** non ** funzionerà qui. Quindi, a meno che l'indice sia (sempre) conosciuto, manca un po 'del puzzle con 'splice' ... –

+0

Ho già visto questa domanda molte volte. –

+0

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

risposta

3

Utilizzare la funzione di giunzione per rimuovere un elemento di un array:

arr.splice(1, 1); 

Se si desidera rimuovere un elemento della matrice senza conoscere l'indice basato su una proprietà elementi, si avrà per scorrere l'array e ogni proprietà di ogni 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

Si potrebbe fare 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 metodo è mplemented in JavaScript 1.6, supportato dalla maggior parte dei browser moderni, se per sostenere il vecchio browser, è possibile scrivere uno proprio.

+3

Si prega di includere i requisiti ... non tutti sono così fortunati ad avere funzione (senza uno spessore). –

+0

@pst Sì, aggiunto. – xdazz

+0

Perfetto, mi ha aiutato ad assegnare! –

Problemi correlati