You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手求教:JavaScript filter()方法代码拆解及结果显示问题

匿名函数版filter()拆解与返回值说明

一、代码拆解

你给出的代码和命名函数版filter的逻辑完全一致,只是把函数定义直接内嵌到了filter参数里,具体拆解如下:

const nums = [0,10,20,30,40,50];
nums.filter( function(num) {
    return num > 20;
})
  1. const nums = [0,10,20,30,40,50];:定义一个数字数组,作为filter方法的调用主体。
  2. nums.filter(...):调用数组的filter方法,该方法会遍历数组每一个元素,根据传入的判断函数筛选符合条件的元素,最终返回一个新数组。
  3. function(num) { return num > 20; }:这就是匿名函数——没有单独定义函数名,直接作为参数传给filter:
    • num是函数参数,对应filter遍历到的当前数组元素(和你熟悉的命名函数参数作用完全相同,比如canVote里的age)。
    • return num > 20;是判断逻辑:当前元素大于20时,会被保留到filter返回的新数组中;反之则被排除。

对比你熟悉的命名函数写法,本质只是把函数定义从外部移到了filter参数里:

// 命名函数版写法
function isGreaterThan20(num) {
    return num > 20;
}
nums.filter(isGreaterThan20);

二、显示过滤后的返回值

filter方法返回筛选后的新数组,但不会修改原数组nums,可以通过以下两种方式查看返回值:

方式1:存入变量后打印

const nums = [0,10,20,30,40,50];
// 把filter返回值存到新变量
const filteredResult = nums.filter(function(num) {
    return num > 20;
});
// 控制台打印结果
console.log(filteredResult); // 输出:[30, 40, 50]

方式2:直接打印返回值

const nums = [0,10,20,30,40,50];
// 直接将filter返回值传给console.log
console.log(nums.filter(function(num) {
    return num > 20;
})); // 输出:[30, 40, 50]

三、返回类型说明

  • filter方法的返回值是新的数组(Array类型),元素类型和原数组一致(这里原数组是数字,返回数组的元素也为数字)。
  • 如果原数组中没有符合筛选条件的元素,filter会返回空数组[],不会返回null或undefined。

内容的提问来源于stack exchange,提问作者trt_stm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 04:25:24