Небезопасный
плохой вариант:
const str = '1+1'; // строка
const result = eval(str); // 2
плохой кулхацкер передаст не "1+1", а злодейский код, который тупо выполнится и всё сломает.
Вариант получше: разбивать строку "1+1" на токены: число, операция, число. Предположим, что задача из детского сада, поэтому числа всегда целые, неотрицательные, а операций всего 4:
+ - * /
Разбить можно используя «
регулярное выражение», или просто тупо искать в строке один из 4 операторов. С регуляркой примерно так:
const str = '1+1'; // строка
const parts = str.match(/(\d+)([-+*\/])(\d+)/); // массив [ "1+1", "1", "+", "1" ]
if (!parts) throw 'не похоже на арифметику!';
const [ _, A, op, B ] = parts;
const a = +A; // из строки в число
const b = +B;
let result;
if (op === '+') result = a + b;
if (op === '-') result = a - b;
if (op === '*') result = a * b;
if (op === '/') result = a / b;
console.log('result', result); // 2