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

如何在JS循环中用动态变量i访问JSON.parse解析后的嵌套对象属性

解决方案

你可以通过JavaScript对象的方括号属性访问语法实现动态属性读取,方括号支持传入字符串表达式,直接拼接动态后缀即可。
核心修改只需将原代码的固定属性写法替换为动态拼接写法:

// 替换前
var Ob = obj.permissions[i-1].module_1.view_1;
// 替换后(模板字符串写法,ES6+支持)
var Ob = obj.permissions[i-1][`module_${i}`][`view_${i}`];
// 兼容低版本的字符串拼接写法
var Ob = obj.permissions[i-1]['module_' + i]['view_' + i];

修改后完整可运行代码

const data = '{"permissions": [{"module_1": {"view_1":"false","edit_1":"false","delete_1":"false","add_1":"false","search_1":"false"}},{"module_2": {"view_2":"false","edit_2":"false","delete_2":"false","add_2":"false","search_2":"false"}},{"module_3": {"view_3":"false","edit_3":"false","delete_3":"false","add_3":"false","search_3":"false"}},{"module_54": {"view_54":"false","edit_54":"false","delete_54":"false","add_54":"false","search_54":"false"}}],"count":"54"}';
const obj = JSON.parse(data);
let Size = obj.count;
for (let i=1; i <= Size ; i++) {
    // 动态读取对应属性
    var Ob = obj.permissions[i-1][`module_${i}`][`view_${i}`];
    console.log(Ob);
}

原理说明

JavaScript对象支持两种属性访问方式:

  • 点操作符:只能接固定的属性名,不能传入动态表达式
  • 方括号操作符:可以传入任意字符串类型的表达式,运行时会将表达式的计算结果作为属性名读取对应值,刚好适配动态拼接属性名的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:15:05