通过对象循环,然后通过嵌套的对象数组——javascript react/redux
我试图通过一个数组循环,从一个对象中提取一条信息。知道了!但是,在获得第一条数据后,我需要在同一对象内的数组中循环,以从嵌套的对象数组中提取更多数据。你知道我该怎么做吗?我试过多种方法。我现在一直在尝试在这个呈现函数中运行两个if语句,而react/redux并不“喜欢”。也就是说,它不会执行第二条if语句。感谢您的帮助。底部有我的数据结构示例,谢谢通过对象循环,然后通过嵌套的对象数组——javascript react/redux,javascript,reactjs,redux,Javascript,Reactjs,Redux,我试图通过一个数组循环,从一个对象中提取一条信息。知道了!但是,在获得第一条数据后,我需要在同一对象内的数组中循环,以从嵌套的对象数组中提取更多数据。你知道我该怎么做吗?我试过多种方法。我现在一直在尝试在这个呈现函数中运行两个if语句,而react/redux并不“喜欢”。也就是说,它不会执行第二条if语句。感谢您的帮助。底部有我的数据结构示例,谢谢 render(){ let takePoll; let choices; if(this.props.po
render(){
let takePoll;
let choices;
if(this.props.polls.length > 0){
takePoll = this.props.polls.map( poll => {
if (this.props.pollId === poll.id){
return (
<div>
<h2 className="take-poll">{poll.text}</h2>
</div>
)
}
})
}
if(this.props.polls.length > 0){
let choices = this.props.polls.map(poll => {
if (this.props.pollId === poll.id){
return poll.choices.map(obj => {
return (
<div>
<h3>{obj.choice}</h3>
</div>
)
})
}
})
}
return (
<div>
{takePoll}
{choices}
</div>
)
}
//DATA STRUCTURE BELOW:
{
"id": "596dfbbc02c10a41e05a82d5",
"text": "which summer was hotter?",
"choices": [
{
"choice": "2017",
"vote": "0"
},
{
"choice": "2004",
"vote": "0"
}
],
"date": "2017-07-18T12:14:52.791Z" }
render(){
让我们投票吧;
让我们选择;
如果(this.props.polls.length>0){
takePoll=this.props.polls.map(poll=>{
如果(this.props.pollId==poll.id){
返回(
{poll.text}
)
}
})
}
如果(this.props.polls.length>0){
让选项=this.props.polls.map(poll=>{
if(this.props.pollId===poll.id){
返回poll.choices.map(obj=>{
报税表(
{obj.choice}
)
})
}
})
}
返回(
{takePoll}
{选择}
)
}
//数据结构如下:
{
“id”:“596dfbbc02c10a41e05a82d5”,
“文本”:“哪个夏天更热?”,
“选择”:[
{
“选择”:“2017年”,
“投票”:“0”
},
{
“选择”:“2004年”,
“投票”:“0”
}
],
“日期”:“2017-07-18T12:14:52.791Z”}
两个具有相同精确变量/值检查的if()语句不应该是您的解决方案。根据@Anamul的建议,您可能希望尝试以下内容:
render() {
let takePoll;
let choices;
if (this.props.polls.length > 0) {
takePoll = this.props.polls.map(poll => {
if (this.props.pollId === poll.id) {
return (
<div>
<h2 className="take-poll">{poll.text}</h2>
</div>
)
}
})
choices = this.props.polls.map(poll => {
if (this.props.pollId === poll.id) {
return poll.choices.map(obj => {
return (
<div>
<h3>{obj.choice}</h3>
</div>
)
})
}
})
}
return (
<div>
{takePoll}
{choices}
</div>
)
}
render(){
让我们投票吧;
让我们选择;
如果(this.props.polls.length>0){
takePoll=this.props.polls.map(poll=>{
if(this.props.pollId===poll.id){
返回(
{poll.text}
)
}
})
choices=this.props.polls.map(poll=>{
if(this.props.pollId===poll.id){
返回poll.choices.map(obj=>{
返回(
{obj.choice}
)
})
}
})
}
返回(
{takePoll}
{选择}
)
}
如果我是你,我会在一个循环中完成
render(){
let takePoll = [];
let choices = [];
for(let i = 0; i < this.props.polls.length; i++) {
let poll = this.props.polls[i]
if (this.props.pollId === poll.id){
takePool.push(
<div>
<h2 className="take-poll">{poll.text}</h2>
</div>
)
choices.concat(poll.choices.map(obj => {
return (
<div>
<h3>{obj.choice}</h3>
</div>
)
}))
}
})
return (
<div>
{takePoll}
{choices}
</div>
)}
render(){
让takePoll=[];
让选择=[];
for(设i=0;i{
报税表(
{obj.choice}
)
}))
}
})
返回(
{takePoll}
{选择}
)}
注意,我已经测试了代码,选项已经由let choices定义,您不能再定义它。再次移除let标记。