Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过对象循环,然后通过嵌套的对象数组——javascript react/redux_Javascript_Reactjs_Redux - Fatal编程技术网

通过对象循环,然后通过嵌套的对象数组——javascript react/redux

通过对象循环,然后通过嵌套的对象数组——javascript react/redux,javascript,reactjs,redux,Javascript,Reactjs,Redux,我试图通过一个数组循环,从一个对象中提取一条信息。知道了!但是,在获得第一条数据后,我需要在同一对象内的数组中循环,以从嵌套的对象数组中提取更多数据。你知道我该怎么做吗?我试过多种方法。我现在一直在尝试在这个呈现函数中运行两个if语句,而react/redux并不“喜欢”。也就是说,它不会执行第二条if语句。感谢您的帮助。底部有我的数据结构示例,谢谢 render(){ let takePoll; let choices; if(this.props.po

我试图通过一个数组循环,从一个对象中提取一条信息。知道了!但是,在获得第一条数据后,我需要在同一对象内的数组中循环,以从嵌套的对象数组中提取更多数据。你知道我该怎么做吗?我试过多种方法。我现在一直在尝试在这个呈现函数中运行两个if语句,而react/redux并不“喜欢”。也就是说,它不会执行第二条if语句。感谢您的帮助。底部有我的数据结构示例,谢谢

    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标记。