如何将Array.prototype方法作为参数传递给咖喱函数

时间:2019-04-12 08:51:47

标签: javascript currying

我开始学习咖喱函数,并认为拥有一种函数可以使我在类似dom元素的组(属于同一父级的输入或选择组)中找到满足回调函数的

我的目标是拥有一个curried函数,我可以在其中传递包含要运行{{1}的元素(类为parentId)的DOM元素的id(groupClassName)。 } 上。我设法使curried函数正常工作,但是找不到通过callback方法作为参数的方法。目前,该方法(.filter或.find方法)已硬编码在函数中。我认为,如果我可以将其作为参数传递,并且只有一个curried函数,可以在其中决定使用哪种原型方法,那将更加DRY。

array.prototype

我正在使用的回调示例如下:

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。这些工作按预期进行,但我想将数组原型方法作为附加参数传递,以使此代码更加干燥。

在我刚开始了解如何在代码中使用咖喱函数的情况下,我非常乐于接受不同的情况

1 个答案:

答案 0 :(得分:2)

您可以为原型使用另一个参数,并使用Function#call通过Action[] actions = new Action[100]; for (int i = 0;i< actions.Length; i++) { actions[i] = () => Console.WriteLine("Hello"+ i); } 调用原型。

Action[]

致电

thisArg