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

无法访问转换后数组对应的JSON属性,求问题排查

问题排查与解决

你的核心问题是错误地将键值对拆分成了数组中的多个独立对象,导致无法通过属性名直接访问对应值:

  • 执行代码后,array的结构是[{Speed: "145"}, {Deceleration: "76.5"}],本质是数组而非单一对象
  • 数组没有Speed这类属性,所以不管是直接访问array.Speed,还是转成JSON字符串再解析后访问js.Speed,都会返回undefined

正确实现方式

应该把所有metric和value合并到同一个对象中,推荐用reduce方法构建目标对象:

var response=[
  {
    metric: "Speed",
    value: "145",
  },
  {
    metric: "Deceleration",
    value: "76.5",
  }
];

// 用reduce构建包含所有键值对的单一对象
const metricObj = response.reduce((acc, item) => {
  acc[item.metric] = item.value;
  return acc;
}, {});

// 直接访问属性
console.log(metricObj.Speed); // 输出 "145"
console.log(metricObj.Deceleration); // 输出 "76.5"

// 若需JSON转换后访问
const j = JSON.stringify(metricObj);
const js = JSON.parse(j);
console.log(js.Speed); // 同样输出 "145"

补充说明

你之前误用了map方法:map的设计目的是返回一个新数组,而非用来执行push这类副作用操作。如果一定要用遍历方式,改用forEach会更合理,但reduce是构建这类键值对对象最简洁的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:25:21