2012-01-02 8 views
6

Ho il seguente snippet che restituisce alcuni ID di YouTube. Ora voglio invertire l'uscita (perché ora è l'ultima prima)jquery reverse array

if (options.slideshow) { 
var links = []; 
var $lis = holder.parents('#yt_holder').find('li'); 
var $as = $lis.children('a'); 
for(var count = $lis.length-1, i = count; i >= 0; i--){ 
    links.push(youtubeid($as[i].href)); 
    } 
slideshow = '&playlist=' + links + ''; 
alert(slideshow); 
} 

ho cercato .reverse(), ma alcune voci sembra mancare poi

links.reverse().push(youtubeid($as[i].href)); 

Qualsiasi aiuto sarà apprezzato . Ceasar

+2

Invece di muoversi a ritroso attraverso l'array di '$ as' (decremento verso' 0') e poi invertire la matrice, perché non andare avanti * * attraverso l'array di '$ as', incrementando verso' i <$ lis.length'? –

+1

Dove hai chiamato 'links.reverse(). Push (youtubeid ($ as [i] .href));'? Nel tuo ciclo? Dovresti semplicemente chiamare 'reverse' una volta. – kba

risposta

2

Prova ad aggiungere i video in ordine inverso, così invece di questo

for(var count = $lis.length-1, i = count; i >= 0; i--){ 
    links.push(youtubeid($as[i].href)); 
    } 

Fate questo

for(var i = 0, count = $lis.length; i < count; i++){ 
    links.push(youtubeid($as[i].href)); 
    } 
+0

Lui Jason. Funziona :-) Ora come posso rimuovere solo il primo nell'array Grazie per il tuo aiuto – ceasar

+0

links.shift(); è la risposta alla mia stessa domanda :-) – ceasar

9

Si dovrebbe invertire la lista dopo aver accumulato:

for (...) { 
    ... 
} 
links = links.reverse(); 

ma sarebbe è meglio mettere semplicemente gli elementi nell'array nell'ordine giusto in primo luogo.

+0

Anche questo funziona. Qual è la soluzione migliore Jason o il tuo? E sai come saltare il primo nell'array? Grazie – ceasar

+0

@ceasar per rimuovere il primo elemento - 'var first = links.shift();' – Alnitak

+0

L'ho già trovato. Mille grazie per l'aiuto :-) – ceasar

0

Salve dopo aver invertito l'array di collegamenti, è necessario assegnarlo ad un altro array e quindi funzionerà.

var slideshow = []; 
slideshow = links.reverse();