实现一个类似数组方法filter()的函数,支持传入一个数组和回调函数,然后筛选出大...
<html><body><script>function Filter(arr, callback) {
// 检查传入的参数是否是有效数组和函数
if (!Array.isArray(arr) || typeof callback !== 'function') {
print('输入错误');
}
// 用于存储满足条件的元素的新数组
var result = [];
// 遍历数组,应用回调函数,将满足条件的元素加入新数组
for (let i = 0; i < arr.length; i++) {
if (callback(arr)) {
result.push(arr);
}
}
return result;
}
// 示例使用
const inputArray = [-2, -1, 0, 1, 2, 3];
const filteredArray = Filter(inputArray, function (value) {
return value > 0;
});
console.log(filteredArray); // 输出 </script>
</body>
</html> 这段代码中有几个错误,我来逐个指出并修正:
1. 在第5行,缺少对传入参数的验证,应该将callback(arr)更改为callback(arr)。
2. 在第8行,创建新数组result时,缺少一个空的方括号[],应该是var result = []。
3. 在第11行,应调用回调函数callback,并传入当前遍历到的元素值arr进行判断是否满足条件。如果满足条件,则将arr加入到新数组result中。
4. 在第17行,输出结果时,应该输出filteredArray,而不是result。
下面是修改后的代码:
function Filter(arr, callback) {
// 检查传入的参数是否是有效数组和函数
if (!Array.isArray(arr) || typeof callback !== 'function') {
console.log('输入错误');
}
// 用于存储满足条件的元素的新数组
var result = [];
// 遍历数组,应用回调函数,将满足条件的元素加入新数组
for (let i = 0; i < arr.length; i++) {
if (callback(arr)) {
result.push(arr);
}
}
return result;
}
// 示例使用
const inputArray = ;
const filteredArray = Filter(inputArray, function (value) {
return value > 0;
});
console.log(filteredArray); // 输出
现在,你可以尝试运行这段代码并输出结果,应该能正确筛选出大于0的元素。希望对你有帮助!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]