Применение преобразования к каждому элементу массива

Рейтинг: 0Ответов: 0Опубликовано: 08.08.2023

Стартовый код:

/**
 * @param {number[]} arr
 * @param {Function} fn
 * @return {number[]}
 */

var map = function(arr, fn) {

};

Задача: Задан целочисленный массив arr и функция fn, верните новый массив, к каждому элементу которого применено преобразование.

Возвращаемый массив должен быть создан таким образом, чтобы returnedArray[i] = fn(arr[i], i).

Пожалуйста, решите эту задачу без встроенного метода Array.map.

Пример 1:
Вход: arr = [1,2,3], fn = function plusone(n) { return n + 1; }
Выход: [2,3,4]
Пояснение: const newArray = map(arr, plusone); // [2,3,4] Функция увеличивает каждое значение в массиве на единицу.

Пример 2:
Вход: arr = [1,2,3], fn = function plusI(n, i) { return n + i; }
Выход: [1,3,5]
Пояснения: Функция увеличивает каждое значение на индекс, в котором оно находится.

Пример 3:
Вход: arr = [10,20,30], fn = function constant() { return 42; }
Выход: [42,42,42]
Пояснение: Функция всегда возвращает 42.

Проблема в том, что код ниже (мое решение) в обычном компиляторе выдает нужный результат, но на самом leetcode в кейсе function plusI(n, i) { return n + i; } почему-то происходит конкатенация вместо суммирования. Это с leetcode проблема или я чего-то не понимаю?

let plusone = function(arr) {
  return ++arr;
}

let plusI = function(n, i) {
  return parseInt(n) + parseInt(i);
};



let constant = function() {
  return 42;
}


var map = function(arr, fn) {
  let result = [];
  for (let i in arr) {
    result.push(fn(arr[i], i)); // Apply the function to each element and store the result in the new array
  }
  return result;
};

let arr = [1, 2, 3]
const newArray = map(arr, plusI);
console.log(newArray);

Ответы

Ответов пока нет.