我正在创建一个数学游戏,并且遇到了这个问题,我无法将随机选取的数组中的字符串(var randomProblem
)转换为表达式。表达式需要保留为字符串,因为我想在屏幕上显示完整的表达式以供用户回答。我试图对var randomProblem
选取的数组进行字符串化,然后删除引号将其转换为表达式,但这并不起作用。
使用我当前的代码,var randomProblem
从var problems
中选择一个随机数组。然后,使用var randomProblem
将JSON.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, ""));
})();

答案 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),因为评估结果是数组