Har gjort två Array med filmer och betyg. Men har lite problem med att skriva ut filmerna + betyg. Funktionen "addMovie" ska nämligen lägga till en film + betyg åt gången och inte alla samtidigt. När jag försöker göra detta skrivs allt istället ut fem gånger (det ska skrivas ut en gång!)
Sen ska en funktion "getAverage" räka ut räkna ut medelvärdet av betygen och när jag gör detta får jag en massa decimaler utskrivna som inte ska vara där??
Någon som vet hur jag ska få rätt på dessa två funktioner? :)
Tack på förhand! :)
//Martina
Javascript
//Array
var titles = new Array();
var ratings = new Array();
//Movie
function addMovie(title, rating)
{
titles.push("Film 1: ", "Film 2: ", "Film 3: ", "Film 4: ", "Film 5: ")
ratings.push(5, 2, 4, 4, 3)
}
addMovie("Film 1: ", 5);
addMovie("Film 2: ", 2);
addMovie("Film 3: ", 4);
addMovie("Film 4: ", 4);
addMovie("Fim 5: ", 3); //Kör jag "addMovie" 5 gånger, skriva allt ut fem gånger? :(
//Print
function printMovies()
{
for(var i = 0; i < 5; i++)
{
addMovie = titles[i] + ratings[i];
}
for(var i = 0; i < titles.length && ratings.length ; i++)
{
document.writeln(titles[i] + ratings[i] + "<br>");
}
}
printMovies()
//Ratings
function getAverage()
{
var totalSum = 0;
for(var i = 0; i < ratings.length; i++)
{
totalSum = totalSum + ratings[i] / ratings.length;
}
document.write("<br> Genomsnittsbetyg: " + totalSum + "<br> <br>"); //måste man skriva Math.round(totalSum*10)/10 för att det ska bli rätt?
getAverage()
gånger så många gånger du anropar din addMovie, den kommer inte lägga in något annat.
getAverage avslutar du aldrig så det bli lite svårt att säga vad den gör men:
//Array
var titles = [];
var ratings = [];
var addMovie = function(title, rating) {
titles.push(title)
ratings.push(rating)
};
var printMovies = function() {
for(var i = 0; i < 5; i++) {
addMovie = titles[i] + ratings[i];
}
for(var i = 0; i < titles.length && ratings.length ; i++) {
document.writeln(titles[i] + ratings[i] + "<br>");
}
};
var getAverage = function() {
var totalSum = 0;
for(var i = 0; i < ratings.length; i++) {
totalSum += ratings[i];
}
document.write("<br> Genomsnittsbetyg: " + (totalSum / ratings.length) + "<br> <br>"); //måste man skriva Math.round(totalSum*10)/10 för att det ska bli rätt?
};
//Add movies to get the average score
addMovie("Film 1: ", 5);
addMovie("Film 2: ", 2);
addMovie("Film 3: ", 4);
addMovie("Film 4: ", 4);
addMovie("Fim 5: ", 3);
//Print out the movies
printMovies();
//Print out average Ratings
getAverage();
jag flyttade din ratings.length, för jag är osäker på hur du vill räkna ut det, men att dela den totala summan varje gång känns lite konstigt
Sen document.write och writeln är inte direkt en jätte modernt sätt att presentera innehåll
Men tydligen så läggs alla filmer + betyg till samtidigt då och inte en åt gången?
Så fick jag ett tips på hur jag kunde lägga till mina filmer i mina arrayer: addMovie("Film 1: ", betyg);
addMovie("Film 2: ", betyg);
addMovie("Film 3: ", betyg);
och det är detta jag har problem med, alltså att få en film+betyg att läggas till åt gången :(
Din addMovie metod är statisk, varje gång du kör den så spelar set ingen roll vad du har sagt att den skall vara för titel eller betyg den kommer lägga in film1-film5 varje gång, vilket är fel, det görs ju i min kod innan presentations metoderna körs.