2015-03-19 42 views
-2

所以..作出的列表功能的阵列的Jquery/JavaScript的

var songList = ["1", "2" ,"3","4","5","6","7","8","9","10"]; 

所以我的想法是要根据指数,返回第5集的值的函数。 如果

getList("1"); // is called. 

它应该导致“1 2 3 4 5”输出。 以及如果 getList(“2”); //被称为 应该导致“6 7 8 9 10”

+0

你的问题还不清楚。你想制作一个看起来像你的songList例子的列表吗?或者你的意思是你想让makeList在提供的索引处返回来自songList的5首歌曲? – cubrr 2015-03-19 08:33:06

+0

Nono。我希望它在提供的索引处返回来自songList的5首歌曲。 – 2015-03-19 08:35:42

+0

也许你应该编辑你的问题来澄清它。 – cubrr 2015-03-19 08:38:02

回答

3

看来你需要的是这样的:

var songList = ["01R!Wagner=_W!_March.mid ", "1004. score.mid ", "1005. yanni-one mans dream.mid ", "1006. haggstrom.mid ", "1007. la campanella pi.mid ", "1008. chp op18.mid ", "1009. Avicii - Wake Me Up.mid ", "101. Titanic my-heart will go on.mid ", "1010. 3intro.mid ", "1011. cast int.mid ", "1012. Action52Cheetahmen.mid ", "1013. pinkband.mid ", "1014. goldendreams.mid ", "1015. Reflections Of A Passion (Yanni).mid ", "1016. Nostalgia (Yanni).mid ", "1017. Rozen Maiden - Kinjirareta Asobi.mid ", "1018. Triple baka.mid ", "102. Konduktor.mid ", "1020. kraftwerk-franz schubert.mid ", "1021. naruto shippuuden - Blue Bird.mid ", "1022. naruto shippuuden - DIVER.mid ", "1023. dire-dire-docks-arranged-.mid ", "1024. koopa-s-theme.mid ", "1025. theme.mid ", "1026. the-last-spartan.mid ", "1027. xbox-startup-sequence.mid ", "1028. sml1-1.mid ", "1029. fourside1.mid ", "103. Minecraft - Sweden.mid ", "1030. eb hotel.mid ", "1031. smoke.mid ", "1032. whoboss.mid ", "1033. entrtanr.mid ", "1034. Eiffel 65- I'm blue (dabadee).mid "]; 

function makeList(index) { 
    var start = Math.max(0, (index-1)*5), // to avoid negative indexes 
     end = Math.min(index*5, songList.length); // to avoid out-of-bound 

    return songList.slice(start, end); 
} 
+0

小提琴现在返回相同的数组,但这是一个更清洁的解决方案,感谢.slice(: – 2015-03-19 09:39:06

+1

这是一个!谢谢! – 2015-03-19 09:41:14

1

这个怎么样

var songList = ["song_1.mp3","song_2.mp3", 
       "song_3.mp3","song_4.mp3", 
       "song_5.mp3","song_6.mp3", 
       "song_7.mp3","song_8.mp3"] 

function makeList(index){ 
    var songsLength = songList.length; 
    var num_songs = (index+5); 
    var next_songs = []; 

    if (num_songs > songsLength){ 
     console.log("cant select index that is greater than length"); 
    } else { 
     for(var i = index; i < num_songs;i++){ 
      next_songs.push(songList[i]); 
     } 
     return next_songs; 
    } 
} 

您可以通过任何指数从你的清单开始。与num_songs你可以改变你想要返回的歌曲数量。请记住,该指数从0开始,所以如果你希望能够通过makeList(1)返回的第一个元素,你也可以设置for (var i = (index-1); i < songsLength; i++)

makeList(3)将返回相同songList.slice(3, 8)

检查fiddle

+0

多数民众赞成但这并不是我的想法..它应该排除前5个或根据何时getList(“2”);或更多被称为,但无论如何感谢帮助! – 2015-03-19 09:05:11

+0

澄清它应该从索引开始根据索引切掉5个值,所以如果索引是1,它会得到前5个,如果它是2,它将离开前5并修剪下5 ..哦,我想我我会让这更混乱。 – 2015-03-19 09:11:44

+0

我不明白。 makeList(“2”)将返回'songList [2] - songList [7]',因此排除前置的indeces。 (这是一个小提琴)(http://jsfiddle.net/zz5kj9bg/2/) – 2015-03-19 09:12:10