Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2018-05-13, 08:50
  #1
Medlem
Här kommer en riktig noob-fråga, men hittar ingen lösning på google.

Finns det något smart sätt att förvara stora arrays i Javascript? Jag försöker göra ett online-test och jag förvarar alla mina frågor/svar i arrays. Varenda gång en ny fråga ska visas laddas den från en array. Men det kommer bli minst 100 frågor och det känns som det kommer ta väldigt mycket minne.
Hur skulle ni lösa det?

Tack!
Citera
2018-05-13, 09:05
  #2
Moderator
vhes avatar
100 element är ingenting. Lägg på några nollor innan du börjar oroa dig. Och f.ö. så definieras väl arrayen endast en gång, oberoende av antal frågor? Så den laddas endast en gång, eller hur?
Citera
2018-05-13, 09:12
  #3
Medlem
Citat:
Ursprungligen postat av vhe
100 element är ingenting. Lägg på några nollor innan du börjar oroa dig. Och f.ö. så definieras väl arrayen endast en gång, oberoende av antal frågor? Så den laddas endast en gång, eller hur?

Jag är faktiskt osäker på hur ofta den laddas. Tror jag ska ta och läsa på lite om den grejen. Men jag anger bara arrayens värden en gång ja.
Citera
2018-05-13, 09:52
  #4
Moderator
Protons avatar
Citat:
Ursprungligen postat av Skogsten
Här kommer en riktig noob-fråga, men hittar ingen lösning på google.

Finns det något smart sätt att förvara stora arrays i Javascript? Jag försöker göra ett online-test och jag förvarar alla mina frågor/svar i arrays. Varenda gång en ny fråga ska visas laddas den från en array. Men det kommer bli minst 100 frågor och det känns som det kommer ta väldigt mycket minne.
Hur skulle ni lösa det?

Tack!
En annan fråga är ju hur du hanterar svaren, det smartaste hade imo varit att skapa ett objekt som får representera en fråga med sitt tillhörande svar, inte att hålla svaren i en separat array, känns som om det skulle kunna bli lustiga effekter då vid en eventuell mismatch mellan frågor och svar
Citera
2018-05-13, 12:28
  #5
Medlem
Citat:
Ursprungligen postat av Proton
En annan fråga är ju hur du hanterar svaren, det smartaste hade imo varit att skapa ett objekt som får representera en fråga med sitt tillhörande svar, inte att hålla svaren i en separat array, känns som om det skulle kunna bli lustiga effekter då vid en eventuell mismatch mellan frågor och svar

Jo jag har tänkt samma sak, fast vet inte hur det skulle fungera att göra som du föreslår och skriva svaren och frågorna i samma array. Det är ett pussel det här
Citera
2018-05-13, 19:12
  #6
Moderator
Protons avatar
Citat:
Ursprungligen postat av Skogsten
Jo jag har tänkt samma sak, fast vet inte hur det skulle fungera att göra som du föreslår och skriva svaren och frågorna i samma array. Det är ett pussel det här
Hur svårt kan det vara?

Kod:
var obj1 = {
"question" "2+2",
"answer" "4"
};

var 
obj2 = {
"question" "3+3",
"answer" "6"
};

var 
myArray = Array();
myArray[0] = obj1;
myArray[1] = obj2;

for(var 
0myArray.lengthi++){
console.log("question: " myArray(i].question " answer: " myArray[i].answer);


Det där borde kunna funka, har inte testat själv och skrivet helt från fantasin
Citera
2018-05-13, 22:45
  #7
Medlem
Citat:
Ursprungligen postat av Proton
Hur svårt kan det vara?

Kod:
var obj1 = {
"question" "2+2",
"answer" "4"
};

var 
obj2 = {
"question" "3+3",
"answer" "6"
};

var 
myArray = Array();
myArray[0] = obj1;
myArray[1] = obj2;

for(var 
0myArray.lengthi++){
console.log("question: " myArray(i].question " answer: " myArray[i].answer);


Det där borde kunna funka, har inte testat själv och skrivet helt från fantasin

Jo men med den där lösningen får man ju skapa hundra objekt. Jag menar, även om det inte är minneskrävande kommer det både ta en otrolig tid samt skapa en massa text som jag hålla skrolla igenom varenda gång jag arbetar med projektet. Då låter det ju mer praktiskt från mitt perspektiv att helt enkelt göra långa arrays. Vet inte, men det ser ut så från min sida.
Citera
2018-05-13, 23:18
  #8
Moderator
Protons avatar
Citat:
Ursprungligen postat av Skogsten
Jo men med den där lösningen får man ju skapa hundra objekt. Jag menar, även om det inte är minneskrävande kommer det både ta en otrolig tid samt skapa en massa text som jag hålla skrolla igenom varenda gång jag arbetar med projektet. Då låter det ju mer praktiskt från mitt perspektiv att helt enkelt göra långa arrays. Vet inte, men det ser ut så från min sida.
Det kommer oavsett bli samma mängd text du kommer skriva, eller har du nåt automatiskt sätt att skapa frågor och svar på?

För det andra, om du nu skapar en array för frågorna och en annan för svaren så skulle du ju i teorin kunna få en mismatch mellan frågor och svar om du ändrar i nån av arrayerna, något du inte kommer kunna få om du sparar frågor och svar i ett objekt, då detta objektet kommer hålla rätt på rätt svar för frågan.

Vad skulle du vinna på att skriva in "långa arrayer" då?

Observera att du inte behöver namnge vart enda objekt, det räcker ju med att proppa i dem i en array.

Kod:
var myArray = Array(); 
myArray[0] ={ 
"question" "2+2"
"answer" "4" 
};
 
myArray[1] = { 
"question" "3+3"
"answer" "6" 
}; 

for(var 
0myArray.lengthi++){ 
console.log("question: " myArray(i].question " answer: " myArray[i].answer); 


Det där kommer göra samma sak.
Citera
2018-05-13, 23:22
  #9
Moderator
Neksnors avatar
Citat:
Ursprungligen postat av Skogsten
Jo men med den där lösningen får man ju skapa hundra objekt. Jag menar, även om det inte är minneskrävande kommer det både ta en otrolig tid samt skapa en massa text som jag hålla skrolla igenom varenda gång jag arbetar med projektet. Då låter det ju mer praktiskt från mitt perspektiv att helt enkelt göra långa arrays. Vet inte, men det ser ut så från min sida.
Inte för att jag kan javascript, men kan du inte lägga frågor/svar i en lämpligt formaterad textfil som läses in (och placeras in lämplig struktur, i det här fallet din array)?

Enkelt ex:
Q: "2+2"
A: "4"
Q: "12*3"
A: "36"

Vid felaktigt format, ex
Q: "2+2"
Q: "4"

så stoppas inläsningen.
Citera
2018-05-13, 23:24
  #10
Moderator
Protons avatar
Citat:
Ursprungligen postat av Neksnor
Inte för att jag kan javascript, men kan du inte lägga frågor/svar i en lämpligt formaterad textfil som läses in (och placeras in lämplig struktur, i det här fallet din array)?

Enkelt ex:
Q: "2+2"
A: "4"
Q: "12*3"
A: "36"

Vid felaktigt format, ex
Q: "2+2"
Q: "4"

så stoppas inläsningen.
Att arrayen får hålla något är ju uppenbart, men vad? Ska svaren ligga i en egen array då menar du? Se ovanstående svar i sådana fall, orkar inte ta storyn om mismatchade svar en gång till.
Citera
2018-05-13, 23:28
  #11
Moderator
Neksnors avatar
Citat:
Ursprungligen postat av Proton
Att arrayen får hålla något är ju uppenbart, men vad? Ska svaren ligga i en egen array då menar du? Se ovanstående svar i sådana fall, orkar inte ta storyn om mismatchade svar en gång till.
Nej för helvete!
Tänkte bara att då slipper man sitta och klippa och klistra in Q&A i koden. Istället får man skriva en liten parser.
Citera
2018-05-14, 06:46
  #12
Moderator
Protons avatar
Citat:
Ursprungligen postat av Neksnor
Nej för helvete!
Tänkte bara att då slipper man sitta och klippa och klistra in Q&A i koden. Istället får man skriva en liten parser.
Ja om sparningen går till på det sätt jag föreslog är det väl ok.

För det andra gäller det att hitta ett sätt att få JS att läsa från filen med, känns som om det kan bli äventyrligt nog.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback