Переменные склеиваются
Возникла проблема, у меня есть 2 переменные (int),но вместо того чтобы сложится, они склеиваются, хотя по сути не должны.
var addTwoNumbers = function(l1, l2) { //Принимает 2 массива
let result = 0
let one = l1.reverse().join('') //Переворачиваем массив и преобразуем в строку
let two = l2.reverse().join('') //Переворачиваем массиви и преобразуем в строку
return one + two //складываем
};
console.log(addTwoNumbers([2, 4, 3], [5, 6, 4]))
Я получаю ответ 342465
Ответы (2 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Ответ находится прямо в вопросе....
В комментариях в коде указано:
Переворачиваем массив и преобразуем в СТРОКУ
А что делает между собой знак плюс со строками?
Как строку преобразовать в число можно подглядеть тут:
Автор решения: edosjoy
→ Ссылка
var addTwoNumbers = function(l1, l2) { //Принимает 2 массива
let result = 0
let one = l1.reverse().join('') //Переворачиваем массив и преобразуем в строку
let two = l2.reverse().join('') //Переворачиваем массиви и преобразуем в строку
return +one + +two //складываем
};
console.log(addTwoNumbers([2, 4, 3], [5, 6, 4]))
Когда вы работаете с двумя строками, интерпретатор не будет заниматься приведением типов - это две строки и этого достаточно. "123" + "123" - конкатенация. Если вы работаете с двумя разными типами данных - тогда да, в дело вступает приведение типов. 123 + "123" - приведение типов.