问题描述
import React,{ useState } from 'react'
const CustomizedListItem = ({ doc }) => {
const [ open,setopen ] = useState(false)
const handleClick = () => {
setopen(!open)
}
return (
<div>
<ListItem button key={doc.Id} onClick={handleClick}>
<ListItemText primary={doc.Name} />
{open ? <ExpandLess /> : <ExpandMore />}
</ListItem>
<Collapse
key={doc.Sheets.Id}
in={open}
timeout='auto'
unmountOnExit
>
<List component='li' disablePadding key={doc.Id}>
{doc.Sheets.map(sheet => {
return (
<ListItem button key={sheet.Id}>
<ListItemIcon>
{/* <InsertDriveFileTwoToneIcon /> */}
</ListItemIcon>
<ListItemText key={sheet.Id} primary={sheet.Title} />
</ListItem>
)
})}
</List>
</Collapse>
<Divider />
</div>
)
}
export default function CategoriesResults() {
const docs = data.documents //this coming from a json file
return (
<div>
<List component='nav' aria-labelledby='nested-list-subheader'>
{docs.map(doc => {
return (
<CustomizedListItem key={doc.id} doc={doc} />
)
})}
</List>
</div>
)
}
我想克隆这些列表并将它们添加到主列表中,其中的数字基于“fl”字典中的唯一“id”。
预期结果:
lst = [{"activity":"tx"},{"activity":"fl","ids":['123','456','789','432']},{"activity":"ia"}]
解决方法
这可以通过 lst[1]['ids']
上的一个简单循环来完成
ans = [[lst[0],{"activity":"fl","ids": id},lst[2]] for id in lst[1]['ids']]
print(ans)
[[{'activity': 'tx'},{'activity': 'fl','ids': '123'},{'activity': 'ia'}],[{'activity': 'tx'},'ids': '456'},'ids': '789'},'ids': '432'},{'activity': 'ia'}]]