как сложить два числа в строковом виде

понимаю, вопрос может быть глупый, но как можно сложить 2 числа в строке:

let a = '3+10';

если складывать (или умножать на числа состоящие из одной цифры, то тогда можно использовать такой вариант..

function StrToNum(str){

  let arr = str.split('');
  let s;
  for(let i = 0; i < 1; i++){
    if (arr.includes('+')){
       s = +str[0] + +str[2]
    } else if(arr.includes('-')){
      s = str[0] - str[2]
    } else if(arr.includes('*')){
      s = str[0] * str[2];
    } else
      s = str[0] / str[2];
    
  }
  return Math.round(s);
}

но если брать число состоящее из двух цифр, то этот вариант не подходит. помогите пожалуйста


Ответы (3 шт):

Автор решения: Great Tech

Разве это не подходящая задача для eval?)

let a = '3+10';
console.log(eval(a))

→ Ссылка
Автор решения: EzioMercer

You can use this way:

const input = document.querySelector('#expression');
const calculateBtn = document.querySelector('#calculate');

calculateBtn.addEventListener('click', () => {
  const expression = input.value;
  let [num1, sign, num2] = expression.split(/([\+\-\*\/])/);
  [num1, num2] = [+num1, +num2];

  let result = null;

  switch (sign) {
    case '+':
      result = num1 + num2;
      break;
    case '-':
      result = num1 - num2;
      break;
    case '*':
      result = num1 * num2;
      break;
    case '/':
      result = num1 / num2;
      break;
  }

  console.log(result);
})
<label>Can calculate only first 2 numbers</label>
<br>
<input type="text" id="expression">
<button id="calculate">Calculate</button>

Explanation about how does work split in this example you can read in documentation

→ Ссылка
Автор решения: Sergey Glazirin

let a = '3+10';
let b = '3-10';
let c = '3/10';
let d = '3*10';
let e = '3h10';

const operators = {
  '/': (a, b) => a / b,
  '*': (a, b) => a * b,
  '+': (a, b) => a + b,
  '-': (a, b) => a - b,
};

function calc(str) {
  const operator = str.replace(/[0-9]/g, '');

  if (!operators[operator]) {
    return `Недопустимый символ ${operator} перепроверьте введенную строку`;
  }

  return str
    .split(operator)
    .map((n) => +n)
    .reduce(operators[operator]);
}

console.log(calc(a));
console.log(calc(b));
console.log(calc(c));
console.log(calc(d));
console.log(calc(e));

→ Ссылка