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

使用JavaScript结合JSON文件根据房间ID获取房间信息时返回undefined的问题排查

为什么通过变量无法正确获取JSON对象的属性?

你的问题核心在于JavaScript对象属性访问方式的使用场景差异,咱们来一步步理清:

错误原因

你现在用的是roomsDB.roomsID这种点表示法,这种写法的规则是:点后面必须是固定的字符串字面量(直接写死的属性名)。所以这里的roomsID会被当成一个字面量属性名,而非你定义的变量——你的JSON里根本没有"roomsID"这个键,自然返回undefined。

而你实际想查找的是变量roomsID的值(也就是"r46")对应的属性,这时候点表示法就不适用了。

解决方案:使用方括号表示法

当需要用变量作为属性名时,必须用方括号表示法obj[variable],它会先解析变量的值,再去对象里匹配对应的键。修改后的代码如下:

function rooms(roomID) { 
  const roomsDB = require("./rooms.json") 
  let roomsID = "r".concat("", roomID).toString() 
  console.log(roomsDB[roomsID]) // 将点改为方括号
} 
rooms(46)

运行这段代码,控制台就能正确输出house了。

小优化:简化属性名拼接

你拼接字符串的方式可以更简洁,用模板字符串或者直接加号拼接都更直观:

// 模板字符串写法(推荐,可读性更高)
let roomsID = `r${roomID}`;

// 或者加号拼接
let roomsID = "r" + roomID;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:42:47