javascript回调函数选择
javascript callback function selection
所以基本上我需要使用我在过滤器函数中实现的每个函数,以便过滤器函数 return myArray 中唯一大于 2 的项目。我完全卡住了。
var myArray = [1, 2, 3, 4, 5];
function each(collection, callback) {
for (var i = 0; i < collection.length; i++) {
callback(collection[i]);
}
}
function filter(collection, test) {
var returnAr = [];
for (var i = 0; i < collection.length; i++) {
if (test(collection[i])) {
returnAr.push(collection[i])
}
}
//instead of using "for(var i = 0; i < collection.length; i++)"
// how can i use the each function i implemented above?
return returnAr;
}
filter(myArray, function(n) {
return n > 2;
}
你不能。上面的 'each' 函数对集合的所有项目执行回调。但是在 'filter' 中,您要根据回调的结果决定是否需要结果数组中的一个项目。所以 'filter' 和 'each' 都是不同的操作。无论你在当前函数中做什么都是正确的过滤方式。
each
的签名接受一个类似数组的东西,以及一个用元素调用的函数。
function each(collection, callback) {
for (var i = 0; i < collection.length; i++) {
callback(collection[i]);
}
}
看来您的回调应该只是执行此操作:
if (test(collection[i])) {
returnAr.push(collection[i])
}
请注意,collection[i] 是回调的第一个参数。
您的回调将采用以下形式:
function(element) {
// do stuff
}
如果您真的只想根据您提供的条件过滤数组,这就是您需要的全部代码:
myArray.filter(function(item) { return item > 2 })
each
函数通过将数组中的每个项目作为函数参数传递来调用其回调。因此正确的调用方式是:
each(collection, function(item) {
if (test(item)) {
// ...
}
}
Javascript 并没有提供一种很好的自我记录方式来指定函数签名 [1]。通常这可以通过阅读 API 文档来解决。但是,如果这是您自己的代码并且没有 API 文档,那么您需要查看回调是如何调用的。在这种情况下,它被称为:
callback(collection[i]);
这告诉我们回调函数应该接受一个参数,该参数是数组中的一项。
[1]:也叫原型,不,不是javascript这个词的意思,"prototype"这个词的C意思"prototype"
所以基本上我需要使用我在过滤器函数中实现的每个函数,以便过滤器函数 return myArray 中唯一大于 2 的项目。我完全卡住了。
var myArray = [1, 2, 3, 4, 5];
function each(collection, callback) {
for (var i = 0; i < collection.length; i++) {
callback(collection[i]);
}
}
function filter(collection, test) {
var returnAr = [];
for (var i = 0; i < collection.length; i++) {
if (test(collection[i])) {
returnAr.push(collection[i])
}
}
//instead of using "for(var i = 0; i < collection.length; i++)"
// how can i use the each function i implemented above?
return returnAr;
}
filter(myArray, function(n) {
return n > 2;
}
你不能。上面的 'each' 函数对集合的所有项目执行回调。但是在 'filter' 中,您要根据回调的结果决定是否需要结果数组中的一个项目。所以 'filter' 和 'each' 都是不同的操作。无论你在当前函数中做什么都是正确的过滤方式。
each
的签名接受一个类似数组的东西,以及一个用元素调用的函数。
function each(collection, callback) {
for (var i = 0; i < collection.length; i++) {
callback(collection[i]);
}
}
看来您的回调应该只是执行此操作:
if (test(collection[i])) {
returnAr.push(collection[i])
}
请注意,collection[i] 是回调的第一个参数。
您的回调将采用以下形式:
function(element) {
// do stuff
}
如果您真的只想根据您提供的条件过滤数组,这就是您需要的全部代码:
myArray.filter(function(item) { return item > 2 })
each
函数通过将数组中的每个项目作为函数参数传递来调用其回调。因此正确的调用方式是:
each(collection, function(item) {
if (test(item)) {
// ...
}
}
Javascript 并没有提供一种很好的自我记录方式来指定函数签名 [1]。通常这可以通过阅读 API 文档来解决。但是,如果这是您自己的代码并且没有 API 文档,那么您需要查看回调是如何调用的。在这种情况下,它被称为:
callback(collection[i]);
这告诉我们回调函数应该接受一个参数,该参数是数组中的一项。
[1]:也叫原型,不,不是javascript这个词的意思,"prototype"这个词的C意思"prototype"