使用传递为参数的函数

时间:2019-05-03 17:01:07

标签: javascript typescript

我想编写一个函数nestedArrayMinWithRule,该函数查找嵌套数组的最小值,该值也符合某些条件(规则)。 到目前为止,我的功能是

nestedArrayMinWithRule(data, rule): number {
    let minimum = Number.MAX_VALUE;
    for (const i of data) {
      for (const j of data) {
        minimum = (j < minimum && rule(j)) ? j : minimum;
      }
    }
    return minimum;
  }

它在其他地方被称为如下:

minimum = nestedArrayMinWithRule(data, ((e) => e !== 0));

但是从结果看来,我要么不是在函数中正确使用rule调用,要么当它是函数的参数时未定义它的属性。我还尝试将规则分成自己的值,例如:

const rule = ((e) => e !== 0));
minimum = nestedArrayMinWithRule(data, rule);

但这也不起作用。我在做什么错了?

1 个答案:

答案 0 :(得分:3)

该错误在您的循环中

for (const i of data) {
  for (const j of data) {
    minimum = (j < minimum && rule(j)) ? j : minimum;
  }
}

我认为这应该是:

for (const i of data) {
  for (const j of i) {
    minimum = (j < minimum && rule(j)) ? j : minimum;
  }
}

有些事情会告诉你:

  1. 逐步调试
  2. 打字稿
  3. 捕获未使用变量的子对象
  4. 控制台。记录一些变量