首页 > 解决方案 > 如何获取路径未知的嵌套对象的值?

问题描述

最初,我通过使用以下代码映射对象数组([{}, {}, {}])来渲染组件:

let todoComponents = allTodos.map(item => <Todos key={item.id} item={item} handleChange={handleChange}/>)

在此处输入图像描述

但是,这不适用于我从具有不同数据结构的 Firebase 获取数据的单独项目。在其中,每个对象都有一个唯一的名称。

[{
  "-M8CpcbvDriZpw4sc4IW" : {
    "completed" : false,
    "id" : "-M8CpcbvDriZpw4sc4IW",
    "text" : "Get Comic Book"
  },
  "-M8Cpku0PCNu0_Eajtuu" : {
    "completed" : false,
    "id" : "-M8Cpku0PCNu0_Eajtuu",
    "text" : "Take out Trash"
  }
}]

问题是.map不知道在哪里寻找item. 在第一个示例中,.map寻找一个数组 -> 对象(带有值)。这不适用于来自 firebase 的数据,因为数组 -> 对象 -> 对象(带有值)。在不知道嵌套对象中的确切路径的情况下,如何告诉.map跳过额外的对象?

标签: javascriptarraysobject

解决方案


如果您调用从 firebase 获得的对象,那么我们说数据:

const obj = data[0]; // i am assuming there is only one object in the array
const allTodos = Object.values(obj); // allTodos is now an array of todos and you can use your original code

推荐阅读