Я прошел 30 дней Javascript в LeetCode. На данный момент у меня 2635. Примените преобразование к каждому элементу массива.
Вызов
Вам дан целочисленный массив arr и функция отображения fn. Ваша задача — создать новый массив, каждый элемент которого является результатом применения функции преобразования к соответствующему элементу входного массива. Другими словами, returnArray[i] = fn(arr[i], i).
Первая попытка
На первый взгляд задача была простой. Мне просто нужно было сделать то, что написано ниже:
var map = function(arr, fn) {
//map applied fn to each iteam in the array
return arr.map(fn); //returning arr.map(fn)
};
Однако, прочитав дальше, я понял, что вы не можете использовать метод Array.map. Поэтому мне пришлось подумать о том, как создать собственную реализацию для сопоставления элементов массива, чтобы решить эту проблему. Подумав, я понял, что мне понадобится цикл, который проходит по массиву и помещает все элементы в новый массив. Помещение элементов в новый массив было важно, потому что именно это и делает метод Array.map.
В моей первой попытке я сделал вот что:
- Я начал с определения пустого массива с именем
result. В конечном итоге этот массив стал хранить наши элементы. - Я добавил
for loopдля перебора введенного массиваarr. Переменная циклаiбыла объявлена для представления текущего индекса массива. - Внутри цикла я добавил функцию
fnк текущему элементуarr[i]. - Затем я сохранил значение в переменной под названием
returnedArray. - Затем я отправил массив
returnedArray, который содержит все значения!
/**
* @param {number[]} arr
* @param {Function} fn
* @return {number[]}
*/
var map = function(arr, fn) {
let result = [];
for (let i = 0; i < arr.length; i++)
{
let returnedArray = fn(arr[i]);
result.push(returnedArray);
}
return result;
};
Однако после отправки кода на LeetCode я понял, что он работает только для двух тестовых случаев!!! Это заставило меня тупо смотреть на экран и выпить кофе, чтобы облегчить мое разочарование.
