Натолкнулся на некоторые проблемы с возвратом вычисленного значения функции, находящейся внутри массива. и был бы признателен за любую помощь в решениях, а также за советы по более элегантным способам решения этой проблемы (например, более логичный способ решить эту проблему)Возвращаемое значение функции из массива с использованием случайного выбора
Я пытаюсь создать программу, которая генерирует две случайные цифры и случайный оператор для применения к указанным цифрам.
var num1 = Math.floor(Math.random() * 20 + 1);
console.log(num1);
var num2 = Math.floor(Math.random() * 1000 + 21);
console.log(num2);
Я изначально установить мой случайный оператор так:
var ops = ["+", "-", "*", "/"]
Я пытался использовать функцию math.random, чтобы выбрать случайное число для индекса массива Ops, но получаю все виды ошибок , поэтому я начал поиск и нашел полезный совет: How to use Javascript to ask the user random math questions?, но не смог найти способ получить случайное значение от объекта (cf. Access non-numeric Object properties by index?), поэтому я вернулся к использованию массива из 4 функций, каждый из которых который имеет возвращаемое значение, которое вычисляет случайные числа (num1 и num2) на основе случайного оператора.
Я получил все, чтобы работать (т. Е. Протестировал свои функции случайных чисел, и даже вижу, что моя переменная newOp каждый раз возвращает другую функцию из массива ops), но вот что я не могу получить программа для выполнения: вернуть вычисленное значение функции. Когда я
alert(newOp)
Я хочу, чтобы предупредить значение функции вместо самой функции. (например, alert -> 20 вместо того, что я сейчас получаю: -> function a() {return (num1 + num2)}
Вот мой код. Все советы и понимание приветствуются! Просто попробуйте учиться.
var num1 = Math.floor(Math.random() * 20 + 1);
console.log(num1);
var num2 = Math.floor(Math.random() * 1000 + 21);
console.log(num2);
var ops = [
function a(){return (num1 + num2)},
function b(){return (num1 - num2)},
function c(){return (num1 * num2)},
function d(){return (num1/num2)}];
var problem = function() {
var random = Math.floor(Math.random()* 4 + 0);
var newOp = ops[random];
alert(newOp);
};
problem();
A [случайное число] (http://www.xkcd.com/221/)? 'return 4; // выбрано честным рулоном кости –