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

JavaScript数组filter方法未生效,匹配特定值返回空数组求助

问题分析与解决

核心错误点

你第二次尝试的代码里,filter的回调函数没有返回判断结果——箭头函数用大括号包裹时,必须显式写return,否则默认返回undefined,而undefined在布尔判断中会被视为false,最终导致筛选出空数组。

修正后的代码

let list = [{"key":"-NJdLxqKEJpDE_7zkmF9","createTime":1671436164193,"lastUpdate":1671436164193,"roomHost":"test@test.com","roomId":25930,"roomMembers":["test@test.com"],"roomName":"Test","todo":[{"addUser":"test@test.com","lastUpdate":1671436158447,"taskName":"1"},{"addUser":"test@test.com","lastUpdate":1671436159985,"taskName":"2"}]}]

// 显式返回判断结果
let newList = list.filter((item)=>{
    return item.key === '-NJdLxqKEJpDE_7zkmF9'
})

// 或者用箭头函数的隐式返回(去掉大括号,更简洁)
let newList = list.filter(item => item.key === '-NJdLxqKEJpDE_7zkmF9')

初始代码的潜在问题

对于第一次的代码:

const list = this.myList.filter((item) => {
      return item.key === key
    })

回调函数本身是正确的,但需要额外排查:

  • 变量key的实际值是否确实是'-NJdLxqKEJpDE_7zkmF9',可以用console.log(key)打印验证,重点检查是否有前后空格、大小写差异或全角/半角符号的区别
  • this.myList是否真的包含你提供的示例数据,有没有在筛选操作前被意外修改

快速验证技巧

可以先遍历数组直接打印每个对象的key和匹配结果,直观排查问题:

this.myList.forEach(item => {
  console.log('当前item的key:', item.key)
  console.log('与目标值是否相等:', item.key === key)
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:40:57