2013-12-13 1 views
6

Diciamo che ho questo array:Javascript: seleziona tutto tranne un elemento dalla matrice con slice()?

var myarray = [a, b, c, d, e]; 

voglio selezionare ogni elemento della matrice tranne c.

var myselection = myarray.slice(3,5); 

Questo seleziona solo d ed e. Avrei fare:

var myselection = myarray.slice(3,5) + myarray.slice(0,2); 

Viene selezionato d, e, a e b, ma l'uscita non è utilizzabile come selettore, poiché myselection sta scritto senza una virgola tra ee un: "d, ea, b "

Conosci un modo per risolvere questo? Forse con numeri negativi?

Grazie mille per il vostro aiuto !!! Lee

risposta

9

Uso concat:

myarray.slice(3,5).concat(myarray.slice(0,2)) 

questo restituisce l'array [d,e,a,b].

Naturalmente, se si sa che si desidera solo per rimuovere elemento dell'array con indice 2, poi fare:

myarray.splice(2,1) 

myarray è ora [a,b,d,e].

1

Uso giunzione:

myArray.splice(key, 1); 

elimina quella riga indesiderati.

+1

E 'importante notare che questo muta l'array originale. –

2

È possibile splice invece:

arr = ['a','b','c','d','e']; 
arr.splice(2,1); 
--> arr == ['a','b','d','e']; 

se non si vuole fare confusione con la matrice originale si può slice di fare una copia poi splice

arr = ['a','b','c','d','e']; 
var selector = arr.slice(); 
selector.splice(2,1); 
--> selector == ['a','b','d','e']; 
+1

seconda parte di ciò non reutrns come hai postato, arr = ['a', 'b', 'c', 'd', 'e']; var selector = arr.slice(). Splice (2,1); -> selettore reutrn ['c']; –

+0

Hai ragione. Ho modificato per renderlo corretto. –