Przypsianie kilku zmiennym wartości z tablicy

0

Jak mam tablice [1,2,3,4,5] i zmienne a,b,c,d i chciałbym zmiennej a przypisać 1, b 2, c 3 itd to jak to można zrobić nie używająć destrukturyzacji. Nie chciałbym używać czegoś czego jeszcze się nie uczyłem

2

Normalnie destrukturyzacją to rób a nie wymyślasz :P

0

Bo pisze sobie aplikacje quizu i chciałbym zrobić tak aby pojawiała sie tylko jedna odpowiedź na jednym miejscu, a u mnie powtarze w dwóch miejscach nar az. Tu jest przykład https://jsfiddle.net/gucm4hd1/

1

@piotrek1998:

Nie chciałbym używać czegoś czego jeszcze się nie uczyłem

Rozumiem, co chcesz powiedzieć. Niemniej moim zdaniem nauka programowania to dobry czas właśnie na używanie czegoś, czego nie znasz do końca. :) Co innego praca, a szczególnie umieszczanie kodu na produkcji.

Bo pisze sobie aplikacje quizu i chciałbym zrobić tak aby pojawiała sie tylko jedna odpowiedź na jednym miejscu, a u mnie powtarze w dwóch miejscach nar az. Tu jest przykład https://jsfiddle.net/gucm4hd1/

Jeśli dobrze rozumiem, to chcesz zrobić losową permutację zbioru odpowiedzi (zob. https://www.math.edu.pl/permutacje). Nie wiem co prawda, jak to będzie w Twoim kodzie wyglądać, ale ogólnie mogłoby to jakoś tak wyglądać:

const input = [1, 2, 3, 4];
const takenIndices = [];
const output = [];

for (let cur = 0; cur < input.length; ++cur) {
  let randomIndex = -1;

  do {
    randomIndex = Math.floor(Math.random() * input.length);
  } while(takenIndices.includes(randomIndex));

  takenIndices.push(randomIndex);
  output.push(input[randomIndex]);
}

console.log(output); // output zawiera te same elementy co input, ale w losowej kolejności
0

Napisałem taki kod

const answerA = document.getElementById('a');
answerA.innerHTML = answerQuiz();
const answerB = document.getElementById('b');
answerB.innerHTML = answerQuiz();
const answerC = document.getElementById('c');
answerC.innerHTML = answerQuiz();
const answerD = document.getElementById('d');
answerD.innerHTML = answerQuiz();
function answerQuiz() {
    let arr = [ 'Java', 'C', 'Python', 'JS' ];
    for (let i = 0; i < arr.length; i++) {
        var one;
        var two;
        var three;
        var four;
        if (arr[i] === 'Java') {
            one = arr[i];
        } else if (arr[i] === 'C') {
            two = arr[i];
        } else if (arr[i] === 'Python') {
            three = arr[i];
        } else {
            four = arr[i];
        }
    }
}

ale wciąż jest w wariantach odpowiedzi Java,Java,Java,Java zamiast Java,C,Python,JS. Wiem że brakuje tu słowa kluczowego return tylko pytanie gdzie żeby móc uzyskać to Java,C,Python,JS, a nie to Java,Java,Java,Java?

0

Podzieliłem teraz kod na cztery funkcje

const answerA = document.getElementById('a');
answerA.innerHTML = answerQuizA([ 'Java', 'C', 'Python', 'JS' ]);
const answerB = document.getElementById('b');
answerB.innerHTML = answerQuizB([ 'Java', 'C', 'Python', 'JS' ]);
const answerC = document.getElementById('c');
answerC.innerHTML = answerQuizC([ 'Java', 'C', 'Python', 'JS' ]);
const answerD = document.getElementById('d');
answerD.innerHTML = answerQuizD([ 'Java', 'C', 'Python', 'JS' ]);
function answerQuizA(arr) {
    let arrAnswers = arr;
    var one;
    for (let i = 0; i < arrAnswers.length; i++) {
        if (arr[i] === 'Java') {
            one = arr[i];
        }
    }
    return one;
}

function answerQuizB(arr) {
    let arrAnswers = arr;
    var two;
    for (let i = 0; i < arrAnswers.length; i++) {
        if (arr[i] === 'C') {
            two = arr[i];
        }
    }
    return two;
}

function answerQuizC(arr) {
    let arrAnswers = arr;
    var three;
    for (let i = 0; i < arrAnswers.length; i++) {
        if (arr[i] === 'Python') {
            three = arr[i];
        }
    }
    return three;
}

function answerQuizD(arr) {
    let arrAnswers = arr;
    var four;
    for (let i = 0; i < arrAnswers.length; i++) {
        if (arr[i] === 'JS') {
            four = arr[i];
        }
    }
    return four;
}

to teraz działa tylko chciałbym się dowiedzieć co byście ewentualnie tutaj zmienili albo poprawili?

5

Ale namieszałeś. Twój kod to teraz ekwiwalent tego:

const answerA = document.getElementById('a');
answerA.innerHTML = 'Java';
const answerB = document.getElementById('b');
answerB.innerHTML = 'C';
const answerC = document.getElementById('c');
answerC.innerHTML = 'Python';
const answerD = document.getElementById('d');
answerD.innerHTML = 'JS';

Tylko nadmiernie rozwleczony. Czy Ty nie chciałeś czasem zrobić tego?

const answers = [ 'Java', 'C', 'Python', 'JS' ];
for (const id of ['a', 'b', 'c', 'd']) {
  const element = document.getElementById(id);
  const answerIndex = Math.floor(Math.random() * answers.length);
  element.innerText = answers[answerIndex];
  answers.splice(answerIndex, 1);
}
0

Napisałem ten kod tak

const answerA = document.getElementById('a');
answerA.innerHTML = answersQuiz();
const answerB = document.getElementById('b');
answerB.innerHTML = answersQuiz();
const answerC = document.getElementById('c');
answerC.innerHTML = answersQuiz();
const answerD = document.getElementById('d');
answerD.innerHTML = answersQuiz();

function answersQuiz() {
    const answers = [ 'Java', 'C', 'Python', 'JS' ];
    for (const id of [ 'a', 'b', 'c', 'd' ]) {
        const element = document.getElementById(id);
        const answerIndex = Math.floor(Math.random() * answers.length);
        element.innerText = answers[answerIndex];
        answers.splice(answerIndex, 1);
    }
}

ale na końcu dostaje undefined. Dlaczego?

0

Gdzie jest ta wartość undefined? Gdzie ją widzisz?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0