javascript - 映射对象内的映射对象

标签 javascript arrays reactjs loops material-ui

我试图在一个已经映射的数组中映射一个数组

我的目标是显示每个用户拥有的 userNameproducts

首先,我映射data 数组并显示每个对象的userName。然后我尝试在同一个对象中显示每个产品。

这是我的尝试

{
    this.state.orders.map((item, index) =>{
      return <div key={index}>
        <ListItem button onClick={()=>{this.handleClick('order1')}}>
          <ListItemIcon>
            <InboxIcon />
          </ListItemIcon>
          <ListItemText inset primary={item.userName}  secondary={item.order[0].product}/>
          {this.state.order1Open  ? <ExpandLess /> : <ExpandMore />}
           <AddIcon />
         </ListItem>
         <Collapse in={this.state.order1Open} timeout="auto" unmountOnExit>
           <List component="div" disablePadding>
             { item.order.map((products, index) =>{
               {console.log('product',products.product)}
                  <ListItem key={index} button className={classes.nested}>
                    <ListItemIcon>
                      <StarBorder />
                    </ListItemIcon>
                    <ListItemText inset primary={console.log(products.product)} />            
                  </ListItem>
                }  
              )}

结果是显示用户名但不显示产品

当我console.log('product',products.product)}

我的回应就是我的产品

例子:

product product1
product product2
product product3
product product4
product product5

所以这证实了 order 对象确实被映射了,但是没有显示 collapse => list => 中的信息列表项。我不只是空

谁能告诉我如何解决这个问题?

数据提要和对象

{
   "data":[
      {
         "id":1,
         "code":1,
         "userId":1,
         "userName":"Jerome Lebanner",
         "timeStamp":"01:00 07-04-2019",
         "order":[
            {
               "item":"product",
               "price":2.5,
               "qty":3
            },
            {
               "drink":"product",
               "price":5.5,
               "qty":3
            }
         ]
      },
      {
         "id":1,
         "code":2,
         "userId":1,
         "userName":"Claudia Schommels",
         "timeStamp":"01:00 07-04-2019",
         "order":[
            {
               "item":"product",
               "price":2.5,
               "qty":2
            },
            {
               "item":"product",
               "price":5.5,
               "qty":3
            }
         ]
      },
      {
         "id":1,
         "code":3,
         "userId":1,
         "userName":"LadiesChaser87",
         "timeStamp":"01:00 07-04-2019",
         "order":[
            {
               "item":"product",
               "price":4.5,
               "qty":1
            },
            {
               "item":"product",
               "price":5.5,
               "qty":3
            }
         ]
      }
   ]
}

最佳答案

您需要像这样返回 HTML:

{ item.order.map((products, index) =>{
    {console.log('product',products.product)}
    return (<ListItem key={index} button className={classes.nested}>
      <ListItemIcon>
        <StarBorder />
      </ListItemIcon>
      <ListItemText inset primary={console.log(products.product)} />            
    </ListItem>);
  }  
)}

关于javascript - 映射对象内的映射对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55928186/

相关文章:

c# - 如何使用 WebBrowser 控件获取 JavaScript 堆栈跟踪?

javascript - 在 JavaScript 中使用全局资源

c - 函数指针的外部数组

css - 根据语言更改字体系列

javascript - 如何在滚动加载其他组件时 react js事件

javascript - 如何显示刚刚在 jqGrid 中更新的保存值而不重新加载整个网格?

javascript - 我可以只使用一个请求来填充同一个 html 元素吗?

c - 在循环之前编写相同代码的替代方法

javascript - 动态翻页功能 - vanilla javascript

reactjs - 在 React Navigation 中隐藏 header 可防止在 Web 上滚动