Что здесь происходит?

Код:
function inArray(arr) {
  return function(x) {
    return arr.includes(x);
  };
}

let arr = [1, 2, 3, 4, 5, 6, 7];
alert( arr.filter(inArray([1, 2, 10])) );


На этой строчке function inArray(arr) - arr - так понимаю это [1, 2, 10] - тогда почему меняя это arrна любое другое название - вывод значений меняется на с 1 по 7 ?

Плохо вообще понимаю, как работает весь данный механизм...
Был бы рад, если бы объяснили. За что буду благодарен!
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 2
ev_g
@ev_g
Web dev.
filter перебирает все элементы массива arr и возвращает те, которые соответствуют условию.
В данном случае на выходе мы получаем массив элементов, которые входят в массив [1,2,10].

Вот можешь глянуть:
https://www.w3schools.com/jsref/jsref_filter.asp
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Изнутри – наружу.

inArray() возвращает функцию. Эта ф-я проверяет, входит ли переданный ей аргумент в массив, с которым она создавалась.
const myInArray = inArray([1,2,3]);
myInArray(4) // false
myInArray(1) // true


Далее наружу. Длинный массив фильтруется методом filter() – т.е. из него остаются только те элементы, для которых функция вернёт true.

Вот и всё. Конструкция из длинного массива оставляет только элементы, перечисленные в коротком.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы