如何处理对象数组?我有一个包含3个对象的数组,其中包含来自db的JSON数据

时间:2016-01-02 21:44:30

标签: javascript arrays json reactjs

基本上,我有一个包含3个对象的posts数组:帖子[{},{},{}]

每个对象看起来像这样:

1: Object
__v: 0
_id: "5686e17fc64feafd4486f22c"
created_at: "2016-01-01T20:28:47.889Z"
image: "Test"
message: "Test"
title: "Test Post 1"
updated_at: "2016-01-01T20:28:47.889Z"

我想知道如何获取每个对象的索引或某些东西,但也将其用于对象的属性。

我之前使用对象对象进行测试,我必须做的就是:Object.keys(this.props.data).map(this.renderPostTile)。然后我可以使用renderPostTile(key)的参数。

当我有一个对象数组时,如何做类似的事情?

enter image description here

2 个答案:

答案 0 :(得分:2)

像这样:



var posts = [
  { title: "Test Post 1" },
  { title: "Test Post 2" },
  { title: "Test Post 3" }
];

posts.map(function(post){
  var p = document.createElement("p"),
      t = document.createTextNode(post.title);
  p.appendChild(t);
  document.body.appendChild(p);
});




显然你的对象更复杂,但你明白了。

修改

反应,你可以做这样的事情:

var PostListRender = React.createClass({
  render: function() {
    return (
      <ul>
        {this.props.posts.map(function(post){
          return <li>{post.title}</li>;
        })}
      </ul>
    )
  }
});

var posts = [
  {title: "Test Post 1"}, 
  {title: "Test Post 2"}, 
  {title: "Test Post 3"}
];

var el = document.getElementById('post-container');
React.render( < PostListRender posts = {posts} />, el);

Demo

答案 1 :(得分:0)

Object.keys返回一个数组,这就是为什么你可以对它进行.map(),这是一个数组方法。所以是的,你可以利用阵列上的地图。字面上只需致电posts.map(myCallback);

你实际上是把一个对象的键转换成一个数组的东西,以便在它上面使用一个Array方法并询问“我也可以对一个数组执行此操作吗?”答案是“嗯...当然,你只需要先把它转换成任何东西......只需调用Array的.map方法”

你一直说它postData.map不是一个函数......但是你说你的数组被命名为posts ...所以它将是posts.map。如果你正在使用的任何东西都没有map方法,那么它就不是一个数组(至少在现代浏览器中)。确保你在阵列上调用它。