鱼C论坛

 找回密码
 立即注册
查看: 765|回复: 1

[学习笔记] 实现一个类似数组方法filter()的函数,支持传入一个数组和回调函数,然后筛选出大...

[复制链接]
发表于 2023-12-16 14:17:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
<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[i])) {
        result.push(arr[i]);
      }
    }
  
    return result;
  }
  
  // 示例使用
  const inputArray = [-2, -1, 0, 1, 2, 3];
  
  const filteredArray = Filter(inputArray, function (value) {
    return value > 0;
  });
  
  console.log(filteredArray); // 输出 [1, 2, 3]</script>
</body>
</html>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-16 14:18:07 | 显示全部楼层
这段代码中有几个错误,我来逐个指出并修正:

1. 在第5行,缺少对传入参数的验证,应该将callback(arr)更改为callback(arr[i])。

2. 在第8行,创建新数组result时,缺少一个空的方括号[],应该是var result = []。

3. 在第11行,应调用回调函数callback,并传入当前遍历到的元素值arr[i]进行判断是否满足条件。如果满足条件,则将arr[i]加入到新数组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[i])) {      result.push(arr[i]);    }  }  return result;}// 示例使用const inputArray = [1, -2, 3, -4, 5];const filteredArray = Filter(inputArray, function (value) {  return value > 0;});console.log(filteredArray); // 输出 [1, 3, 5]
现在,你可以尝试运行这段代码并输出结果,应该能正确筛选出大于0的元素。希望对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 02:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表