webForumDet fria alternativet

Filmsamling - med betyg Javascript

JavaScriptur Javascript

4 svar · 985 visningar · startad av Miini

Medlem sedan apr. 201216 inlägg
Frågan#1

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()
Medlem sedan juni 20019 519 inlägg
#2

din addMovie kommer pushar in:

  titles.push("Film 1: ", "Film 2: ", "Film 3: ", "Film 4: ", "Film 5: ") 
  ratings.push(5, 2, 4, 4, 3)

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

Medlem sedan apr. 201216 inlägg
#3

Tack genomsnitts betyget fungerar som det ska nu! :)

Men det med "addMovie", först hade jag skrivit funktionen såhär och då skrev allt ut en gång:

function addMovie(title, rating)
{
  titles.push("Film 1: ", "Film 2: ", "Film 3: ", "Film 4: ", "Film 5: ") 
  ratings.push(5, 2, 4, 4, 3)  
}
  addMovie();

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 :(

Medlem sedan juni 20019 519 inlägg
#4

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.

Medlem sedan apr. 201216 inlägg
#5

Tack så jätte mycket! :)

136 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)