@denischernykl

Не правельно складываются переменные JS?

Не правельно складываются переменные JS

let price1  = $('#1').text().replace(/[^0-9]/g, ''),
        price2  = $('#2').text().replace(/[^0-9]/g, '');

let sum = price1 + price2;
console.log(sum);


И все складывается как строковые значения, а мне нужно чтобы все складывалось как цифры. Что делаю не так?
  • Вопрос задан
  • 645 просмотров
Решения вопроса 2
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
Проблема в том, что .text() - возвращает строку, а не число. Это разные типы. Строки складываются по логике строк:
строка 2 + строка 2 = строка 22, а не 4. В то время как число 2 + число 2 = число 4.

Вашим решение будет использовать функцию parseInt(), которая преобразует строки в числа:
let price1 = parseInt($('#1').text().replace(/[^0-9]/g, '')),
price2 = parseInt($('#2').text().replace(/[^0-9]/g, ''));

let sum = price1 + price2;
console.log(sum);
Ответ написан
Комментировать
@romicohen
Системный Архитектор
let sum = Number(price1) + Number(price2);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
prompt возвращает не число, а строку.
+ – это не только оператор сложения, но и оператор конкатенации (соединение строк).

Когда вы "складываете" две строки, они просто склеиваются.

Еще есть такая штука, как приведение типов. Это когда вы оперируете двумя переменными разных типов, они неявно приводятся к одинаковому типу. Правила приведения загуглите сами.

Когда складывается строка с числом, число превращается в строку. А дальше я уже писал, сложение двух строк приводит к их склейке.

Ваше решение состоит в том, чтобы явно привести полученное из promt число к числовому типу

const x = +prompt("Введите число") // Унарный плюс преобразует операнд к числовому типу
let l = x + 10
console.log(l)

const x = Number(prompt("Введите число")) // Более явное преобразование
let l = x + 10
console.log(l)

const x = parseInt(prompt ("Введите число")) // Преобразование в целому числу
let l = x + 10
console.log(l)

const x = parseFloat(prompt ("Введите число")) // Преобразование к числу с плавающей точкой
let l = x + 10
console.log(l)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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