2012-01-02 69 views
6

Tôi có đoạn mã sau trả về một số id youtube. Bây giờ tôi muốn đảo ngược đầu ra (vì bây giờ nó là người cuối cùng đầu tiên)mảng đảo ngược jquery

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); 
} 

tôi đã cố gắng .reverse() nhưng một số mặt hàng có vẻ là thiếu rồi

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

Bất kỳ trợ giúp sẽ được đánh giá cao . Ceasar

+2

Thay vì di chuyển ngược về mảng '$ as' (giảm dần về' 0') và sau đó đảo ngược mảng, tại sao không chuyển tiếp * qua mảng '$ as', bằng cách tăng dần về phía' i <$ lis.length'? –

+1

Bạn gọi 'links.reverse() ở đâu. Push (youtubeid ($ as [i] .href)); '? Trong vòng lặp for của bạn? Bạn chỉ nên gọi 'đảo ngược' một lần. – kba

Trả lời

2

Hãy thử thêm các đoạn video theo thứ tự ngược lại, vì vậy thay vì điều này

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

Làm điều này

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

Ông jason. Điều đó hoạt động :-) Bây giờ làm thế nào tôi có thể loại bỏ chỉ là người đầu tiên trong mảng Cảm ơn sự giúp đỡ của bạn – ceasar

+0

links.shift(); là câu trả lời cho câu hỏi của riêng tôi :-) – ceasar

9

Bạn nên đảo ngược danh sách sau bạn đã tích lũy nó:

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

nhưng nó sẽ tốt hơn là chỉ cần đặt các phần tử vào mảng theo thứ tự đúng ngay từ đầu.

+0

Điều này cũng hoạt động. Giải pháp tốt nhất của Jason là gì? Và bạn có biết cách bỏ qua chuỗi đầu tiên trong mảng không? Cảm ơn – ceasar

+0

@ceasar để xóa phần tử đầu tiên - 'var first = links.shift();' – Alnitak

+0

Tôi đã tìm thấy phần tử đó. Rất cám ơn vì đã trợ giúp :-) – ceasar

0

Xin chào bạn sau khi đảo ngược mảng liên kết, bạn phải gán nó cho mảng khác và do đó nó sẽ hoạt động.

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