JavaScript 功能未按预期运行
JavaScript function not working as intended
我一直在解决一个问题,需要一些帮助!
我在下面创建了自己的每个函数:
var myArray = [1,2,3,4,5]; // this will be running through the collection parameter
var each = function (collection, callback) {
if (Array.isArray(collection)) {
for (i=0; i<collection.length; i++) {
callback(collection[i]);
};
} else {
for (var property in collection){
callback(collection[property]);
}
}
};
我还在下面创建了自己的过滤器函数:
var filter = function(collection, predicate) {
var newArray= [];
if (each(collection, predicate)) {
newArray.push(collection[property]);
};
return newArray;
};
var test = function (item) {
return item > 2;
}; // this will be running through the predicate parameter
filter(myArray, test);
我想做的是,在不更改每个函数或测试函数且仅更改过滤器函数的情况下,利用过滤器函数中的每个函数。最后一行代码的目的是 return,是 myArray 的每个元素在谓词参数下最终为真 - 在本例中为测试函数。所以,结果应该是 [3,4,5]。但是,我只是让数组打印为空。我知道错误在哪里 - 我相信它在这里:
if (each(collection, predicate))
这行代码试图做的是使用 each 函数,使用 predicate 函数遍历集合中的每个项目,如果该特定项目在 predicate 下的计算结果为真,则下一行将推送元素进入 newArray.
希望这是有道理的!
你会想做这样的事情:
var filter = function(collection, predicate) {
var array = [];
each(collection, function(item) {
if(predicate(item))
array.push(item);
});
return array;
};
每个的第二个元素是回调
您的 filter
函数需要将谓词包装在一个单独的函数中,以便它可以构建其 return 值:
var filter = function(collection, predicate) {
var newArray= [];
each(collection, function(element) {
if (predicate(element)) newArray.push(element);
});
return newArray;
};
现在 您的 回调传递给您的 each()
函数使用传入的测试函数来检查集合中的每个元素,但它随后可以使用该结果来确定是否应将元素添加到结果中。
我一直在解决一个问题,需要一些帮助!
我在下面创建了自己的每个函数:
var myArray = [1,2,3,4,5]; // this will be running through the collection parameter
var each = function (collection, callback) {
if (Array.isArray(collection)) {
for (i=0; i<collection.length; i++) {
callback(collection[i]);
};
} else {
for (var property in collection){
callback(collection[property]);
}
}
};
我还在下面创建了自己的过滤器函数:
var filter = function(collection, predicate) {
var newArray= [];
if (each(collection, predicate)) {
newArray.push(collection[property]);
};
return newArray;
};
var test = function (item) {
return item > 2;
}; // this will be running through the predicate parameter
filter(myArray, test);
我想做的是,在不更改每个函数或测试函数且仅更改过滤器函数的情况下,利用过滤器函数中的每个函数。最后一行代码的目的是 return,是 myArray 的每个元素在谓词参数下最终为真 - 在本例中为测试函数。所以,结果应该是 [3,4,5]。但是,我只是让数组打印为空。我知道错误在哪里 - 我相信它在这里:
if (each(collection, predicate))
这行代码试图做的是使用 each 函数,使用 predicate 函数遍历集合中的每个项目,如果该特定项目在 predicate 下的计算结果为真,则下一行将推送元素进入 newArray.
希望这是有道理的!
你会想做这样的事情:
var filter = function(collection, predicate) {
var array = [];
each(collection, function(item) {
if(predicate(item))
array.push(item);
});
return array;
};
每个的第二个元素是回调
您的 filter
函数需要将谓词包装在一个单独的函数中,以便它可以构建其 return 值:
var filter = function(collection, predicate) {
var newArray= [];
each(collection, function(element) {
if (predicate(element)) newArray.push(element);
});
return newArray;
};
现在 您的 回调传递给您的 each()
函数使用传入的测试函数来检查集合中的每个元素,但它随后可以使用该结果来确定是否应将元素添加到结果中。