如何将数组中的字符串转换为表达式?

时间:2016-10-08 11:55:14

标签: javascript arrays

我正在创建一个数学游戏,并且遇到了这个问题,我无法将随机选取的数组中的字符串(var randomProblem)转换为表达式。表达式需要保留为字符串,因为我想在屏幕上显示完整的表达式以供用户回答。我试图对var randomProblem选取的数组进行字符串化,然后删除引号将其转换为表达式,但这并不起作用。

使用我当前的代码,var randomProblemvar problems中选择一个随机数组。然后,使用var randomProblemJSON.stringify()的内容转换为字符串,并存储在名为processProblem的var中。最后,我将var processProblem的内容记录到控制台中并删除了双引号以查看结果。

例如,如果randomProblem选择["6-18"]作为随机数组并通过JSON.stringify并删除其引号,结果将是[16-8]而不是[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, ""));

})();




1 个答案:

答案 0 :(得分:1)

这项工作正如您所期望的那样:

(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]);

})();

我评估字符串化randomProblem的内容并获取其第一个值(索引为0),因为评估结果是数组