Все началось летом 2020 года, я учился перебирать массивы и впервые открыл для себя силу map. Тогда я не совсем это понял, но я понял, что метод .map был фундаментальным и мощным способом перебора значений в массиве. Перенесемся на несколько месяцев вперед в мой буткемп во Flatiron, и я создаю проект для своего краеугольного камня и снова интегрирую этот знакомый метод, теперь меньше задумываясь о том, почему он работает, и просто понимая, что он просто делает то, что должен делать. Я сталкиваюсь с некоторыми проблемами, ищу решения и продолжаю работать над своим кодом. Промойте и повторите, промойте и повторите.

Теперь, в настоящем, я решаю задачи кода для собеседований и практикуюсь в LeetCode и CodeWars, и я сталкиваюсь с проблемой, застреваю и для всего мира, я не могу понять, как решить эту проблему. Я делаю вдох, говорю о своей проблеме в пустоту или, вернее, вслух себе в надежде, что решение придет ко мне. Для некоторой ясности, это проблема, над которой я работал, и, оглядываясь назад, она оказалась намного проще, чем я думал.

function squareDigits(num){
  //may the code be with you
}

Задача: создать функцию, которая принимает число в качестве входных данных, перебирает и возводит в квадрат каждую цифру и, наконец, выводит новое число. Так, например:

input: 365 
// 3**2 = 9
// 6**2 = 36
// 5**2 = 25
output: 93625

Мой мыслительный процесс: «Я хочу изолировать каждое целое число в числе, а затем возвести его в квадрат. Как мне это сделать?" Прежде чем начать, я объявляю переменную и называю ее arr для представления массива, потому что я знаю, что для изменения каждого числа мне придется разделить значения, а затем выполнить итерацию по каждому элементу. Итак, для начала я конвертирую num в строку, добавляя числа к пустой строке, затем я использую String.split('') для преобразования строки в массив. И в приведенном выше примере переменная arr должна выглядеть как [‘3’, ‘6’, ‘5’].

Теперь, поскольку arr — это массив, я могу использовать встроенный метод массива map для перебора каждого значения. И способ работы карты заключается в том, что мы объявляем переменную внутри карты, представляющую каждый экземпляр элементов, которые мы будем перебирать внутри массива, и в конце возвращать новый массив. В этом случае мы пометим каждую переменную экземпляра как number. Мы передаем номер стрелочной функции, и внутри функции мы вводим условия или поведение, которое мы хотим, чтобы функция выполняла, в этом случае мы возведем в квадрат значение number.

function squareDigits(num){
  let arr = (num+"").split('').map(number => (number**2))
}

Пока все выглядит хорошо, но мы еще не закончили. Теперь нам нужно объединить и объединить все элементы в нашем новом массиве, а затем преобразовать их из строки обратно в целое число. Есть два способа сделать это. Первое было намного проще, а второе представляло собой небольшой рефакторинг. Для первого решения я создал новую строку и соединил элементы в arr с помощью метода массива, соединил и обернул все это внутри функции parseInt. Второе решение точно такое же, но вместо того, чтобы оборачивать переменную arr, я оборачиваю содержимое arr плюс метод соединения внутри parseInt().

solution 1: 
return parseInt(arr.join('')) 
solution 2: 
return parseInt((num+"").split('').map(number => (number**2)).join(''))

Я с нетерпением жду возможности углубить свое понимание JavaScript и надеюсь, что это могло быть чем-то полезным или обзором для тех, кто знаком с основами.