#javascript #arrays
#javascript #массивы
Вопрос:
Я нахожусь в процессе создания математической игры и застрял в этой проблеме, когда я не могу преобразовать строку в случайно выбранном массиве (by var randomProblem
) в выражение. Выражения должны оставаться строками, потому что я хочу отобразить полное выражение на экране, чтобы пользователь мог ответить. Я попытался упорядочить выбранный массив var randomProblem
, затем убрать кавычки, чтобы превратить его в выражение, но это не сработало.
С моим текущим кодом var randomProblem
выбирает случайный массив из var problems
. Затем содержимое var randomProblem
превращается в строку с помощью JSON.stringify()
и сохраняется в вызываемой переменной processProblem
. Наконец, я зарегистрировал содержимое 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. Простое решение: оценка, правильное решение: анализ входных данных.
Ответ №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]);
})();
Я оцениваю содержимое вашего stringified randomProblem
и принимаю его первое значение (с индексом 0), потому что результатом вычисления является массив