функция которая возвращает разряды числа

хотел сделать задачу но что-то застопорился: 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))

→ Ссылка