Hej,
Nogen kode guruer der kan gennemskue hvorfor:
if (i % 4 == 0 || i % 4 == 1) array2 = array1[i+2];
Ikke virker, og kommer med error, når:
if (i % 4 == 0) array2 = array1[i+2];
if (i % 4 == 1) array2 = array1[i+2];
Virker?
Og når:
var t = 2;
if (t==0 || t==1) alert('0 eller 1');
else alert('ikke 0 eller 1');
Virker?
o_O
Hjælp JavaScript driller!
Skal der ikke være { } i if funktioner i javascript? :/ Hvorfor ikke bare opstille to if'er, hvis det virker? Begrænset hvor meget kodevrøvl du kan få for det. :D
if (i%4==0 || i%4==1) { array2 = array1[i+2]; }
Det jeg mente, men har ikke lige muligheden for selv at prøve.
Det virker fint hos mig.
Hvilken browser bruger du?
Prøv evt. at smide lidt mere kode.
Det der står i if'en er jo at: hvis i moduls 4 er 0 eller 1 så sæt array2 til at være lig med array[i+2]
du har derimod et problem hvis du kun skriver t == 0 eller t == 1 da så tal som 4,5,8,9 osv osv som virker i den første if ikke vil virke i din anden if sætning
Det burde være ok, hvis du har prøvet både OR if sætningen og de to adskilte i samme contex
Post mere kode og skriv fejlmeddelelsen...
Decoon: kun hvis det er flere linier der skal udføres er det nødvendigt med {} =)
Hej, jeg har fået det til at virke, det var fordi jeg havde kommenteret en senere linie ud som TILFÆLDIGVIS indeholdte det afsluttende } for en tidligere if sætning =)
Men tak for hjælpen ellers =)
if ((Math.floor(i/4) % 4) == 2) { // shift 2 places left
if (i%4 == 0 || i%4 == 1) array2 = array1[i+2];
if (i % 4 == 1) array2 = array1[i+2];
if (i % 4 == 2) array2 = array1[i-2];
// if (i % 4 == 3) array2 = array1[i-2];}
Den sidste } der havde jeg kommenteret væk da den var anbragt efter det sidste ;
Til dem der er nysgærrige (sikkert 0) er her den funktion jeg prøvede at få til at virke:
Den tager et array der altid vil være deleligt med 2 i længde, og ser det 4 elementer (tal) af gangen. De første 4 skal der ikke gøre noget ved, de næste 4 skal roteres indbyrdes 1 plads til venstre, næste 4 2 pladser til venstre, og sidste 4 3 plader til venstre. Dernæst skal den gå tilbage til 0 rotering ved næste 4 osv. osv.
function shiftrows() {
var array1 = [0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,4,5,6,7,4,5];
var array2 = [];
for (i=0; i < Math.floor(array1.length/4)*4; ++i) { // Kør denne løkke på den del
// af arrayet som er delelig med 4
if (Math.floor(i/4)%4 == 0) array2 = array1; // no shift
if (Math.floor(i/4)%4 == 1) { // shift 1 place left
if (i%4 == 3) array2 = array1[i-3];
else array2 = array1[i+1];
}
if (Math.floor(i/4)%4 == 2) { // shift 2 places left
if (i%4 == 0 || i%4 == 1) array2 = array1[i+2];
if (i%4 == 2 || i%4 == 3) array2 = array1[i-2];
}
if (Math.floor(i/4)%4 == 3) { // shift 3 places left
if (i%4 == 0) array2 = array1[i+3];
else array2 = array1[i-1];
}
}
if (array1.length - i == 2) { // håndter de evt. 2 sidste cifre
alert('2 i overskud');
if (Math.floor(i/4)%4 == 0 || Math.floor(i/4)%4 == 2) {array2 = array1; array2[i+1] = array1[i+1];}
if (Math.floor(i/4)%4 == 1 || Math.floor(i/4)%4 == 3) {array2 = array1[i+1]; array2[i+1] = array1;}
}
else alert ('else pelse, det hele gik op');
alert(i);
alert('array2 = ' + array2);
var t = 2;
if (t==0 || t==1) alert('0 eller 1');
else alert('ikke 0 eller 1');
}
Ja det =) og jeg er ikke koder, eneste jeg har kendskab til er c64 maskinkode fra de gamle c64 demo dage o_O
Læg lige mærke til min "elegante" måde at forsikre mig om at det stykke at arrayet der køres gemmen for løkken er en længde der er delelig med 4:
Math.floor(array1.length/4)*4
= længde/4, fjern decimaler og gang igen med 4 LOL
Smart nok, hvis du er fra C64 dagene, vil jeg da bare sige
sys64738 Over and out