You need to enable JavaScript to run this app. JavaScript中JSON.parse解析后遍历对象键取值返回undefined的问题求助
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中JSON.parse解析后遍历对象键取值返回undefined的问题求助

问题核心原因
  • 点语法访问属性的规则限制:对象.属性名 的写法中,点后面的内容会被识别为固定字面量的属性名,无法接收动态的键名变量。你代码中循环拿到的item是存储了实际键名的变量,用JSON.parse(data).item取值时,实际是在查找对象上名字叫item的专属属性,这个属性本身不存在,所以输出结果全是undefined。
  • 冗余性能消耗:代码在map循环的每一次迭代中,都重复执行一次JSON.parse(data)对同一段字符串做解析,存在不必要的性能浪费。
修复实现步骤
  • 仅对JSON字符串做一次解析,将结果存为独立的对象变量,避免重复计算
  • 动态获取属性值时,替换为方括号属性访问语法,该语法支持将变量中存储的字符串作为属性名匹配对应值

修正后的可运行代码:

let data = "{\"id\":14133,\"taskType\":\"viewing\",\"propertyId\":479,\"userId\":640,\"subject\":\"Viewing with Arsalan Ahmed at Bahria Town Phase 2\",\"date\":\"2021-02-18T18:44:00.000Z\"}";

const parsedObj = JSON.parse(data);
Object.keys(parsedObj).map(item => console.log(parsedObj[item], item))

补充说明:如果只是单纯遍历做打印操作,没有基于遍历结果生成新数组的需求,将map替换为forEach会更符合语义,二者此处的运行结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 02:57:01