Может кто-нибудь объяснить мне строку кода в функции - PullRequest
0 голосов
/ 20 января 2020

Может кто-нибудь объяснить мне, что эта строка кода на самом деле означает шаг за шагом.

arrRes.push(fn(arr[i]));

Я понимаю часть pu sh, но я изо всех сил пытаюсь набрать asp код в скобки.

Вся функция выглядит следующим образом:

function arrayCalc (arr, fn) {

    arrRes = [];

    for (let i = 0; i < arr.length; i++) {

        arrRes.push(fn(arr[i])); // <--- this line here in the parenthesis

    }
    return arrRes;
};

Извините, если это глупый вопрос, но я смотрел видео-урок пять раз, и я просто не могу понять, что эта строка точно означает.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 20 января 2020

есть некоторая функция fn, переданная в качестве аргумента и массива arr

arrRes.push(fn(arr[i])); - означает:

  1. принять значение из arr (индекс i)
  2. выполнение функции fn со значением в качестве параметра
  3. независимо от результата, pu sh до arrRes

пример

function arrayCalc (arr, fn) {

    arrRes = [];

    for (let i = 0; i < arr.length; i++) {

        arrRes.push(fn(arr[i])); 

    }
    return arrRes;
};

const someArr = [1,2,3];

function someFunction(number) {
  return number * 10;
}

function someOtherFunction(number) {
  return `${number}_Z`;
}

console.log(arrayCalc(someArr, someFunction)) // [10, 20, 30]
console.log(arrayCalc(someArr, someOtherFunction)) // ['1_Z', '2_Z', '3_Z']
2 голосов
/ 20 января 2020

Это обычно называется отображением: примените функцию к каждому элементу коллекции ... Таким образом, если у вас есть массив [1,2,3] и сопоставьте его с функцией, которая умножает число на 2, вы будете конец массива равен [2,4,6].

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

arrRes = [];
for (let i = 0; i < arr.length; i++) {
    var dummy = arr[i]; 
    var mapped = fn(dummy);
    arrRes.push(mapped);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...