Нужна функция, которая работает как калькулятор
Задача:
Необходимо, чтобы функция решала простую математическую задачу, которая поступает в виде массива. Результат выводим в консоль.
Вот функция и примеры для реализации. Функция принимает только 1 параметр.
function getResult (calculator) {
}
getResult(["100", "+", 200]) // 300
getResult([90, "/", 30]); // 3
getResult(["5", "-", "5"]); // 0
getResult(["7", ">", "12"]); // false
getResult(["7", "<", "12"]); // true
getResult(["2", '**', 4]); // 'Ошибка'
getResult(["*", "10", 25]); // 'Ошибка'
Первым делом конечно нужно привести к типу данных number либо string, тут без разницы это не сложно. А вот как дальше быть не пойму. Я такую задачу еще не решал и примера не смог найти. А сам додуматься ни как не могу.
Ответы (1 шт):
А вот как дальше быть не пойму. Я такую задачу еще не решал и примера не смог найти.
Предложу вот такой вариант функции. Используется возможность самому "создать" тело некой функции и потом ее использовать. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Function
function getResult (a = []) {
if (isNaN(a[0]) || isNaN(a[2])) return 'Ошибка'
const op = ['+', '-', '/', '>', '<', '*', '**']
if (op.indexOf(a[1]) == -1) return 'Ошибка'
let v
try {
const tmp = new Function(`return ${+a[0]} ${a[1]} ${+a[2]}`)
v = tmp()
} catch(e) {
v = 'Ошибка'
}
return v
}
console.log(getResult(["100", "+", 200])) // 300
console.log(getResult([90, "/", 30])); // 3
console.log(getResult(["5", "-", "5"])); // 0
console.log(getResult(["7", ">", "12"])); // false
console.log(getResult(["7", "<", "12"])); // true
console.log(getResult(["2", '**', 4])); // 16
console.log(getResult(["*", "10", 25])); // 'Ошибка'
console.log(getResult(['(function() {console.log("hello!"); return "Я подменил возвращаемое значение"})();', '+', 2]))