Eloquent JavaScript 第3版第5章练习3
Eloquent JavaScript 3rd Edition Chapter 5 Exercise 3
我对最新的第 3 版中的这个特定练习有困难。这是高阶函数章节。本版第 5 章。练习提示如下:
" 类似于 some 方法,数组也有一个 every 方法。这个 returns true 当给定function returns true for every element in a way. 在某种程度上,some 是 || 运算符的一个版本,作用于数组,every 类似于 && 运算符。
将every实现为一个以数组和谓词函数为参数的函数。写两个版本,一个使用循环,一个使用some方法。"
在代码 sandbox 中,建议的函数如下所示:
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
查看测试用例,我似乎无法完全弄清楚如何将数组参数传递给测试参数,其中测试参数可以是任何东西。作者只是说 "a predicate function." 我想我可以坚持使用 n 作为变量,但似乎作者希望我编写自己的 array.prototype.every() 方法.
有人对这个练习的目的有任何见解吗?或者有人想指出我遗漏了什么?
当你调用一个函数时,你并不关心参数变量的名称是什么。您只需将所需的值作为参数传递,其余的由函数处理。
因此您只需调用 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
我对最新的第 3 版中的这个特定练习有困难。这是高阶函数章节。本版第 5 章。练习提示如下:
" 类似于 some 方法,数组也有一个 every 方法。这个 returns true 当给定function returns true for every element in a way. 在某种程度上,some 是 || 运算符的一个版本,作用于数组,every 类似于 && 运算符。
将every实现为一个以数组和谓词函数为参数的函数。写两个版本,一个使用循环,一个使用some方法。"
在代码 sandbox 中,建议的函数如下所示:
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
查看测试用例,我似乎无法完全弄清楚如何将数组参数传递给测试参数,其中测试参数可以是任何东西。作者只是说 "a predicate function." 我想我可以坚持使用 n 作为变量,但似乎作者希望我编写自己的 array.prototype.every() 方法.
有人对这个练习的目的有任何见解吗?或者有人想指出我遗漏了什么?
当你调用一个函数时,你并不关心参数变量的名称是什么。您只需将所需的值作为参数传递,其余的由函数处理。
因此您只需调用 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