JavaScript迭代对象

时间:2017-03-31 03:28:13

标签: javascript reactjs firebase firebase-realtime-database

我刚刚开始使用Firebase,我在迭代数据库对象时遇到了麻烦(即JSON中)。

以下是示例数据

const _ = require ('underscore');
var data ={
  "posts": {
    "-JRHTHaIs-jNPLXOQivY": {
      "author": "gracehop",
      "title": "Announcing COBOL, a New Programming Language"
    },
    "-JRHTHaKuITFIhnj02kE": {
      "author": "alanisawesome",
      "title": "The Turing Machine"
    }
  }
}

我试图在表格中显示它,例如:

return <table>
    <tr>
        <td>author</td>
        <td>title</td>
    </tr>
    {data.map(k=>{
    return <tr key={k}>
        <td>{k.author}</td>
        <td>{k.title}</td>
    </tr>
    }).bind(this)}
</table>

以前我使用了完全不同的架构(psql + python),并且以不同的方式返回对象,例如:

const _ = require ('underscore');
var data ={
  0: {
    "-JRHTHaIs-jNPLXOQivY": {
      "author": "gracehop",
      "title": "Announcing COBOL, a New Programming Language"
    },
    1: {
      "author": "alanisawesome",
      "title": "The Turing Machine"
    }
  }
}

代码工作正常。但是,Object.map似乎不适用于文本值。

我想知道迭代这些数据的最佳方法。我试图使用下划线的mapObject功能,对于每个,我都在寻找适当的文档以迭代这些数据。任何欣赏这一点的建议都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

"1000"是一个Array方法;你拥有的是一个物体。您可以使用map将对象的值作为数组获取,这样您就可以Object.values(data)

如果由于浏览器兼容性问题而无法使用Object.values(data).map,您还可以使用Object.values获取一系列密钥。然后,您可以执行Object.keys(data)来检索每个值,例如map,然后您将获得所需的值数组。