Все началось летом 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 и надеюсь, что это могло быть чем-то полезным или обзором для тех, кто знаком с основами.