Обнажите мою новизну, если можете, я просто пытаюсь точно понять, что происходит в этой функции, чтобы я мог лучше адаптировать ее к своему случаю использования и писать более чистый / короткий код, когда это необходимо.Функция работает, конечно, и я могу ее использовать, но она вызывает недовольство, когда я не до конца понимаю код, который использую.Я думаю, что понимаю по большей части, но мне трудно собрать все части воедино.Если это дубликат, тогда прошу прощения за все извинения и пометьте его как таковой, но я не смог найти точного ответа на то, что я пытаюсь понять.Из других ответов на вопросы и посторонних статей я смог понять большую часть происходящего, но я все еще застрял на нескольких моментах.
Точный код:
const userBy = id => u => u.id == id;
const users = [{ id: 1, name: "Kaio" }, { id: 2, name: "Gabriella" }, { id: 3, name: "Enzo" }];
const id = 2;
const user = users.find(userBy(id));
С моим главным вопросом, сосредоточенным вокруг:
const userBy = id => u => u.id == id;
Я получил код из этой статьи на тот случай, если понадобится больше контекста, хотя вышеупомянутого кода должно быть достаточно - https://medium.com/@kaiosilveira/mastering-javascript-arrays-beyond-for-and-foreach-loops-e2ecf9dfe3e
Я понимаю, что в функции 'userBy' в качестве параметра передается 'id'.Я также понимаю, что в сокращенном синтаксисе подразумевается оператор return, и что метод find () имеет три собственных параметра (element, index, array), очень похожих на функцию forEach (), которую я понимаю и часто использую.
Чтобы сложить все вместе - я понимаю, что «id» передается в качестве параметра, но затем, если я правильно понимаю, «u» возвращается и / или передается как параметр конечной функциигде указанное свойство 'id' для 'u' равно параметру 'id', который был передан в исходную функцию.И так как я знаю, что метод find () выполняет итерации по массиву, я могу разумно сделать вывод, что 'u' является текущим элементом / индексом этого массива.
Конкретная часть, с которой мне труднопонимание состоит в том, как 'u' захватывает элемент / индекс как его значение.Кроме того, почему «u» должно быть в своей собственной функции, а не в качестве другого параметра рядом с параметром «id» инициирующей функции.
Как я уже сказал, функция работает и все хорошо, независимо от того, понимаю ли я ее,Но я был бы очень признателен всем, кто мог бы найти время, чтобы объяснить мне, что именно происходит.Я исследовал и понял все, что мог сам, просто мне нужно немного подержать те последние несколько моментов, которые я упомянул.
[Постотвеченное редактирование] Он просил меня объяснить, почему этот вопрос былотличается от Что означают множественные функции стрелок в javascript? .Они очень похожи, но я думаю, что в моей конкретной ситуации с добавленным методом Array.prototype.find он достаточно дифференцирован, чтобы оправдать свое собственное объяснение.По сути, я вижу, как некоторые могут пометить его как одно и то же, поэтому, если другие так считают, то непременно отметьте его как дубликат.Что бы ни было лучше для сообщества, я в порядке, я просто благодарен, что сообщество нашло время, чтобы помочь мне понять мой вопрос.