0

从最新的第 3 版开始,我在这个特殊的练习中遇到了困难。这是高阶函数一章。本版第 5 章。练习提示如下:

“类似于some方法,数组也有every方法。当给定函数为数组中的每个元素返回 true 时,此方法返回 true 。在某种程度上,some是作用于数组的 || 运算符的一个版本,并且every就像 && 运算符。

将every实现为以数组和谓词函数作为参数的函数。编写两个版本,一个使用循环,一个使用some方法。”

在代码沙箱中,建议的函数如下所示:

function every(array, test) {
// Your code here.
}

测试样本如下所示:

console.log(every([1, 3, 5], n => n < 10));
// → true
console.log(every([2, 4, 16], n => n < 10));
// → false
console.log(every([], n => n < 10));
// → true

查看测试用例,我似乎无法弄清楚如何将数组参数传递给测试参数,其中测试参数可以是任何东西。作者只是说“谓词函数”。我想我可以坚持使用n作为变量,但似乎作者希望我编写自己的 array.prototype.every() 方法。

有没有人对这个练习的目的有任何见解?或者也许有人想指出我错过了什么?

4

1 回答 1

0

当你调用一个函数时,你并不关心参数变量的名称是什么。您只需将所需的值作为参数传递,该函数将处理其余部分。

因此,您只需test()使用数组的当前元素作为参数调用该函数。

function every(array, test) {
  for (let i = 0; i < array.length; i++) {
    if (!test(array[i])) {
      return false;
    }
  }
  return true;
}

console.log(every([1, 3, 5], n => n < 10));
// → true
console.log(every([2, 4, 16], n => n < 10));
// → false
console.log(every([], n => n < 10));
// → true

于 2020-04-16T19:15:15.010 回答