функция которая возвращает разряды числа
хотел сделать задачу но что-то застопорился: Cоздать функцию которая принимает число и возвращает текст как в примере: 3275 —> "3000 + 200 + 70 +5"*/
const func=(number)=>{
let arr=number.toString().split("").reverse();
for (let i = 0; i < arr.length; i++) {
arr[i]=arr[i]*Math.pow(10,i);
}
let result=arr.reverse().join(" + ");
console.log(result);
}
let number=32752;
func(number);
как надо было сделать, чтобы 2 раза не делать reverse?
Ответы (1 шт):
Автор решения: Alexander Lonberg
→ Ссылка
function foo(value) {
return [...value.toString()]
.map((v, i, a) => v.padEnd(a.length - i, "0")).join(' + ')
}
console.log(foo(3275))
- Разбиваем строку в массив
[...value.toString()] - Удлиняем каждый элемент до необходимого разряда
padEnd(). Подсчитать очень просто: вся длина строки минус текущий индекс К примеру двойка -> "1234" ->4 - 1, значитpadEnd(3, "0") -> 200 - Склеиваем
.join(' + ')
UPD: При необходимости исключить нули, лучше так
function foo(value) {
return [...value.toString()]
.map((v, i, a) => (+v ? v.padEnd(a.length - i, "0") : false)).filter((v) => v).join(' + ')
}
console.log(foo(3075))