2016-10-08 6 views
-1

Je suis en train de créer un jeu de maths et je suis resté bloqué sur ce problème où je ne peux pas convertir la chaîne dans le tableau choisi au hasard (par var randomProblem) en une expression. Les expressions doivent rester sous forme de chaînes car je veux afficher l'expression complète à l'écran pour que l'utilisateur réponde. J'ai essayé de stringifier le tableau qui a été choisi par var randomProblem, puis supprimez les guillemets pour le transformer en une expression, mais cela n'a pas fonctionné.Comment transformer une chaîne dans un tableau en une expression?

Avec mon code actuel, var randomProblem sélectionne un tableau aléatoire parmi var problems. Ensuite, le contenu de var randomProblem est transformé en chaîne en utilisant JSON.stringify() et est stocké dans un var appelé processProblem. Enfin, j'ai enregistré le contenu de var processProblem dans la console et supprimé les guillemets pour voir quel serait le résultat.

par exemple, si randomProblem a choisi ["6-18"] comme le tableau aléatoire et est passé par JSON.stringify et dépouiller de ses citations, le résultat serait [16-8] au lieu de [8].

(function playGame() { 
 

 
    var problems = [ 
 
    ["6 * 6 - 27"], 
 
    ["1 * 10 - 1"], 
 
    ["2 + 5 * 1"], 
 
    ["5 * 10 - 42"], 
 
    ["8 + 6 - 7"], 
 
    ["(1 - 1) * 20"], 
 
    ["4 * 3 - 6"], 
 
    ["98 - 95"], 
 
    ["16 - 8"], 
 
    ["(5 + 9)/2"], 
 
    ["(21 + 19)/5"], 
 
    ["(4 - 3) * 7"], 
 
    ["(7 - 1)/2"], 
 
    ["(8 + 2)/5"] 
 
    ]; 
 

 
    //var problem = document.getElementById('problem'); 
 
    var randomProblem = problems[Math.floor(Math.random()*problems.length)]; 
 
    //var displayProblem = problem.innerHTML += randomProblem; 
 
    var processProblem = JSON.stringify(randomProblem); 
 

 
    console.log(processProblem.replace(/"/g, "")); 
 

 
})();

+0

Solution simple: eval, solution appropriée: analyser les entrées. – rlemon

Répondre

1

Ce travail que vous attendez:

(function playGame() { 

    var problems = [ 
    ["6 * 6 - 27"], 
    ["1 * 10 - 1"], 
    ["2 + 5 * 1"], 
    ["5 * 10 - 42"], 
    ["8 + 6 - 7"], 
    ["(1 - 1) * 20"], 
    ["4 * 3 - 6"], 
    ["98 - 95"], 
    ["16 - 8"], 
    ["(5 + 9)/2"], 
    ["(21 + 19)/5"], 
    ["(4 - 3) * 7"], 
    ["(7 - 1)/2"], 
    ["(8 + 2)/5"] 
    ]; 

    //var problem = document.getElementById('problem'); 
    var randomProblem = problems[Math.floor(Math.random()*problems.length)]; 
    //var displayProblem = problem.innerHTML += randomProblem; 
    var processProblem = JSON.stringify(randomProblem).replace(/"/g, ""); 

console.log(processProblem); 
console.log(eval(processProblem)[0]); 

})(); 

J'évalue le contenu de votre de chaîne de caractères randomProblem et de prendre sa première valeur (avec l'indice 0), parce que le résultat de l'évaluation est un tableau