【发布时间】:2022-01-07 15:12:17
【问题描述】:
我正在尝试编写一个不使用.filter 函数来过滤数组的函数。这是到目前为止我编写的函数;
function filter(ray, fn) {
//The easy way
//let filterArray = ray.filter(fn);
//return filterArray;
let filterArray = [];
for (let i = 0; i < ray.length; ++i) {
if (fn(i) === true) {
filterArray.push(i);
} else {
//do nothing
}
}
return filterArray;
}
用作fn的函数是;
function isOdd(x) {
return x % 2 === 1;
}
function alwaysTrue(x) {
return true;
}
function alwaysFalse(x) {
return false;
}
该函数目前可与alwaysFalse 函数一起使用,但不能与其他两个一起使用。我哪里错了?
function filter(ray, fn) {
//The easy way
//let filterArray = ray.filter(fn);
//return filterArray;
let filterArray = [];
for (let i = 0; i < ray.length; ++i) {
if (fn(i) === true) {
filterArray.push(i);
} else {
//do nothing
}
}
return filterArray;
}
function isOdd(x) {
return x % 2 === 1;
}
function alwaysTrue(x) {
return true;
}
function alwaysFalse(x) {
return false;
}
console.log(filter([1,2,3,4], isOdd)); // [1,3]
console.log(filter([1,2,3,4], alwaysFalse)); // []
【问题讨论】:
标签: javascript arrays loops if-statement filter