2015-06-13 56 views
-1

我正在制作一个应用程序,每首歌曲需要读取10首歌曲名称和5个评级。我有一个数组为每首歌将存储名称和5个不同的评级将是理想的,但我不知道如何动态创建一个for循环的数组。有任何想法吗?下面是一个示例:使用for循环动态创建数组

for (var song = 1; song < 11; song++) { 
    prompt("Give song title, No:" + " " + song); 
    for (var i = 1; i < 8; i++) { 
     prompt("Give song No:" + " " + song + " " + ", rating:" + i); 
    } 
} 
+2

@Alex,为什么在世界上你需要一个for循环和数组的jQuery? – epascarello

+0

最有可能的数据结构是单个数组,每首歌有一个元素。每首歌曲元素都是一个属性为“name”和“ratings”的对象,其中“ratings”是一个五元素数组。您可以通过创建该数组来创建该数组,然后每次通过循环将新元素推送到该数组上。 –

回答

3

我建议你有对象,每个对象包含一个标题和收视率的数组的数组,让你看起来像这样的结构:

[ 
    { 
    title: "First song", 
    ratings: [ 5, 3, 4, 1, 4 ] 
    }, 
    { 
    title: "Second song", 
    ratings: [ 2, 3, 2, 1, 1 ] 
    } 
] 

首先创建数组,然后为每首歌曲创建一个对象为空的数组进行评级。然后你可以把这个数组中的评级:

var songs = []; 
for (var song = 0; song < 10; song++) { 
    var title = prompt("Give song title, No: " + song); 
    songs[song] = { 
    title: title, 
    ratings: [] 
    }; 
    for (var i = 1; i <= 5; i++) { 
    var rating = prompt("Give song No: " + song + " , rating:" + i); 
    songs[song].ratings.push(rating); 
    } 
} 
+0

非常感谢你,还有一个问题。例如,如何提醒第二首歌的第一个评价。 – Theof

+1

@Theof:第二首歌曲是'songs [1]',并且该歌曲的评分是'songs [1] .ratings',因此将会是alert(歌曲[1] .ratings [0]);'。 – Guffa