Как написать функцию, которая после передается в filter и выдает определенный отрезок из массива?

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

Немного не понял задачу, которая выглядит так:

const arr = [1, 2, 3, 4, 5, 6];

const result = arr.filter(getBetween(2, 5));


console.log("result: ", result); // [3, 4]

я так понял нужно написать функцию которая принимает в себя два параметра и после выдает нужный массив.

Ответы

▲ 2

Видимо такое

const arr = [1, 2, 3, 4, 5, 6];
const result = arr.filter(getBetween(2, 5));
console.log("result: ", result); // [3, 4]

function getBetween(min, max){
   return ( value => (value > min) && (value < max) );
}

В данной задаче getBetween должно возвращать функцию сравнения, которая будет использована для фильтрации. Запись .. => .. это краткое определение анонимной функции. То есть x => y эквивалентно

function (x) { return y; }

Применительно к данному сниппету вернем функцию для фильтрации:

return function (value){
           return (value > min) && (value > max)
       };

При этом передачу внутрь аргументов min/max называют "замыканием" функции на внешнюю область видимости.

в целом весь алгоритм будет представлять из себя примерно такую итоговую последовательность шагов:

let filterFunction = getBetween(2,5); // 2 -> min, 5 -> max
let result = [];
for(i = 0; i < arr.length; i++) {
    let check = filterFunction(arr[i]);  // arr[i] -> value
    if (check) {
        result.push(arr[i]);
    }  
}