Я начинаю узнавать о функциях карри и подумал, что было бы полезно иметь функцию, которая позволяет мне находить среди групп схожих элементов dom (группы входов или выборок, принадлежащих одному и тому же родителю)те, которые удовлетворяют функции обратного вызова.
Моя цель - получить функцию карри, в которой я могу передать идентификатор (parentId
) элемента DOM, который содержит элементы (с классом groupClassName
), для которых я хочу запустить callback
.Мне удалось заставить работать функцию карри, но я не могу найти способ передать метод array.prototype
в качестве параметра.На данный момент метод (будь то метод .filter или .find) жестко закодирован в функциях.Я подумал, что было бы более СУХОЙ, если бы я мог передать это в качестве параметра и иметь только одну функцию карри, где я могу решить, какой метод-прототип использовать.
const filterGroups = parentId => groupClassName => callback => {
const groups = Array.from(
document.getElementById(parentId).getElementsByClassName(groupClassName)
);
return groups.filter(group => callback(group));
};
const findGroups = parentId => groupClassName => callback => {
const groups = Array.from(
document.getElementById(parentId).getElementsByClassName(groupClassName)
);
return groups.find(group => callback(group));
};
пример обратного вызова, который я используюбыло бы так:
export function altDateGroupEmpty(group) {
const selects = Array.from(group.getElementsByTagName("select"));
return selects.every(select => select.value === "");
}
на данный момент я не могу передать метод прототипа массива (отфильтровать или найти), и мне нужно создать две различные функции карри filterGroups
и findGroups
.Они работают, как и ожидалось, но я хотел бы передать метод-прототип массива в качестве дополнительного параметра, чтобы сделать этот код более сухим.
Я очень открыт к различным взглядам на эту ситуацию, так как я только начинаю понимать, как использовать функции с карри в моем коде