2016-04-10 21 views
-1

What it's supposed to look likeJavaScript: nesneler olarak rastgele matematik denklemleri, bir Array, 20 kez

Dinamik 20 matematik problemlerini oluşturma ile görevli ediyorum oluşturuluyor. Matematik problemleri, oluşturulmadan önce bir dizi nesne olarak oluşturulmalıdır. Takılı olduğum kısım, bir dizi içindeki nesneler olarak 20 farklı rasgele denklem oluşturuyor ve bunları tabloya çağırıyor. İşte şimdiye kadar sahip olduğum şey.

<script> 

    // creates a random number from 1-100 
var randNum1 = Math.floor(Math.random() * 100) + 1; 

var randNum2 = Math.floor(Math.random() * 100) + 1; 

// creates a random operator 
var op = ["*", "+", "/", "-"][Math.floor(Math.random() * 4)]; 


var problemList = [{number1: randNum1, operator: op, number2: randNum2}, 

]; 



var problems, i; 


var displayProblems = function (problems) { 
    // open the table 
    var str = "<table class=table>"; 

    for (i = 0; i < problems.length; i++) { 
     str += "<tr>"; 
     str += "<td>" + problems[i].number1 + " " + problems[i].operator + " " + problems[i].number2 + " " + "<input type='text' class='answer' id='answer_" + i + "' /></td>"; 
     str += "</tr>"; 

    } 

    str += "</table>"; 

    document.getElementById("mathGrid").innerHTML = str; 
}; 

window.onload =function() { 
    displayProblems(problemList); 

}; 

</script> 

Bütün gün buna takıldım ve bunun nasıl yapılacağını anlayamıyorum. Bu benim javascript için ikinci görevim ve herhangi bir yardım çok takdir edilecektir.

İşte burada neler yaptığımın bir örneği. JS Fiddle

cevap

1

Böyle bir sorunu çözdüğümde yapacağım ilk şey, basitleştirmektir. böylece gibi sadece tek bir rasgele sorunu yaratan bir işlev yaparak

Başlangıç: bu işlevi yaptıktan sonra, zaten test edip bir şeyler çalışma görebilmeniz

function generateProblem() { 
    // creates a random number from 1-100 
    var randNum1 = Math.floor(Math.random() * 100) + 1; 
    var randNum2 = Math.floor(Math.random() * 100) + 1; 

    // creates a random operator 
    var op = ["*", "+", "/", "-"][Math.floor(Math.random() * 4)]; 

    return {number1: randNum1, operator: op, number2: randNum2}; 
} 

dikkat edin.

Bundan sonra, bunlardan 20'sini yapmak çok daha kolaydır, sadece 20 kez işlevi çağırmanız ve sonuçları diziye eklemeniz yeterlidir. Ya elle:

var problemList = [ 
    generateProblem(), 
    generateProblem(), 
    generateProblem() 
    ... 
]; 

Ya bir döngü kullanarak: Yanıtınız için

var problemList = []; 
while (problemList.length < 20) { 
    problemList.push(generateProblem()); 
} 
+0

teşekkürler. Şimdi 'var problemList' bir dizi nesne olarak kabul edilir? Ve yine de 20 farklı problemi basmak için bir for döngüsünde arayabilir miyim? Kırış şekliniz çok yardımcı oluyor ve kitabımın "nasıl denemeyeceğini" açıklamaktan kesinlikle daha kolay. –

+0

@Gorgon_Union Evet, hala bir dizi nesne, tam olarak önceki gibi. – SlySherZ

İlgili konular