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

如何在JavaScript的filter函数中使用变量作为对象的键名

正确实现方式

你需要修改两处逻辑:

  1. 修正currentMode的作用域问题:原代码中currentMode在if/else块内用const声明,属于块级作用域,外部的filter函数无法访问,需要将变量声明提到块外部。
  2. 使用方括号[]语法实现动态属性访问:JS中如果要使用变量作为对象的键名,不能用点运算符+花括号的写法,要改用方括号包裹变量。

完整可运行代码

// 示例对象数组
const data = [{"itemID": 11, "Complete": true, "Started": true},{"itemID": 16, "Complete": false, "Started": false}];
// 相关变量
var possible_ItemID = 16;
let isStartMode = false; // 可根据实际需求修改该值切换模式

// 修正currentMode作用域
let currentMode;
if(isStartMode){
    currentMode = 'Started'
} else {
    currentMode = 'Complete'
}

// 修正filter的动态属性判断逻辑
const lineItem = data.filter((item) => item.itemID === possible_ItemID && item[currentMode] !== true)

console.log(lineItem)

语法说明

JS访问对象属性支持两种语法:

  • 点运算符:仅支持传入固定的属性名字面量,如item.Started直接访问Started属性
  • 方括号运算符:支持传入变量、表达式,运行时会自动将内部内容转为字符串作为属性名访问,刚好满足动态切换键名的需求

内容的提问来源于stack exchange,提问作者Ben in CA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:45:04