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

React使用map访问键名未知的嵌套对象的问题咨询

解决方案

核心方法是用Object.values()提取对象的属性值,无需提前知道随机文档ID的具体值,具体实现如下:


方案1:先统一处理数据为标准结构

你可以先将接口返回的特殊格式数组转换为常规的业务对象数组,方便后续所有场景使用:

const data = [
  {
    randomdocid67233: {
      name: "ABC",
      latinName: "DEF" 
    }
  },
  {
    randomdocid6d7dddd233: {
      name: "GHI",
      latinName: "JKI" 
    }
  }
];

// 处理数据
const processedData = data.map(item => {
  // 提取单键对象的业务数据
  const businessData = Object.values(item)[0];
  // 可选:同时提取文档ID备用
  const docId = Object.keys(item)[0];
  return {
    docId,
    ...businessData
  }
})

处理后你可以直接通过字段名读取数据:

console.log(processedData[0].name) // 输出ABC
console.log(processedData[1].latinName) // 输出JKI

方案2:遍历渲染时直接提取

如果不需要提前处理数据,也可以在遍历渲染时直接取值,以React为例:

{data.map((item, index) => {
  const businessData = Object.values(item)[0]
  return (
    <div key={index}>
      <p>名称:{businessData.name}</p>
      <p>拉丁名:{businessData.latinName}</p>
    </div>
  )
})}

原理解释

Object.values()是ES2017引入的标准方法,会返回对象所有可枚举属性的值组成的数组。由于你从Firestore拿到的每个对象都只有1个属性(随机生成的文档ID),因此取数组的第一个元素即可直接拿到对应的业务数据,完全不需要提前知道文档ID的具体值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:36:02