Нужна функция, которая работает как калькулятор

Рейтинг: 0Ответов: 1Опубликовано: 07.03.2023

Задача:

Необходимо, чтобы функция решала простую математическую задачу, которая поступает в виде массива. Результат выводим в консоль.

Вот функция и примеры для реализации. Функция принимает только 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, тут без разницы это не сложно. А вот как дальше быть не пойму. Я такую задачу еще не решал и примера не смог найти. А сам додуматься ни как не могу.

Ответы

▲ 0Принят

А вот как дальше быть не пойму. Я такую задачу еще не решал и примера не смог найти.

Предложу вот такой вариант функции. Используется возможность самому "создать" тело некой функции и потом ее использовать. 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]))