基本上,我有一个包含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)
的参数。
当我有一个对象数组时,如何做类似的事情?
答案 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);
答案 1 :(得分:0)
Object.keys
返回一个数组,这就是为什么你可以对它进行.map()
,这是一个数组方法。所以是的,你可以利用阵列上的地图。字面上只需致电posts.map(myCallback);
你实际上是把一个对象的键转换成一个数组的东西,以便在它上面使用一个Array方法并询问“我也可以对一个数组执行此操作吗?”答案是“嗯...当然,你只需要先把它转换成任何东西......只需调用Array的.map方法”。
你一直说它postData.map
不是一个函数......但是你说你的数组被命名为posts
...所以它将是posts.map
。如果你正在使用的任何东西都没有map方法,那么它就不是一个数组(至少在现代浏览器中)。确保你在阵列上调用它。