@supkiler

Как превратить массив в число?

как превратить массив или строку в число
у меня есть строка '1+1'
или массив '1+1'

как сделать так чтоб 1+1 стало числом и сложилось чтоб результат стал 2 ?
  • Вопрос задан
  • 220 просмотров
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
Для произвольных строк со скобками и т.д. тут

Это если сам хочешь запилить. А так, полно готовых решений, например https://mathjs.org/
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@eldenhard2
Как вариант
let num1= '1'
let num2 = '1'
let arr1= Array.from(num1)
let arr2 = Array.from(num2 )
let mainArray = [...arr1, ...arr2 ]
let massiv_num = mainArray .map(i => Number(i))
// Итоговое значение
let sumOfNumbers = massiv_num.reduce((acc, number) => acc + number, 0);
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Небезопасный плохой вариант:
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
Ответ написан
Комментировать
@alubochkin
eval('1+1') // ёто не хорошо

'1+1'.split() а дальше через условия выявлять числа и тип опреции
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы