【发布时间】:2021-12-03 20:04:42
【问题描述】:
只有在检查了文档时,我才想从地图函数中返回对象。这是我的状态的结构。
{
type: ListOfTypes[Math.floor(Math.random() * ListOfTypes.length)],
name: ListOfNames[Math.floor(Math.random() * ListOfNames.length)],
id: nanoid(),
channels: [
{
id: nanoid(),
Name: ListOfChannels[Math.floor(Math.random() * ListOfChannels.length)],
Files: [
{ folder: "Folder", id: nanoid(), documents: [{ doc: "WordDoc1.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc2.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc3.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc4.doc", isChecked: false, id: nanoid() }] },
{ folder: "Folder", id: nanoid(), documents: [{ doc: "WordDoc1.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc2.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc3.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc4.doc", isChecked: false, id: nanoid() }] },
{ folder: "Folder", id: nanoid(), documents: [{ doc: "WordDoc1.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc2.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc3.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc4.doc", isChecked: false, id: nanoid() }] },],
},
{
id: nanoid(),
Name: ListOfChannels[Math.floor(Math.random() * ListOfChannels.length)],
Files: [
{ folder: "Folder", id: nanoid(), documents: [{ doc: "WordDoc1.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc2.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc3.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc4.doc", isChecked: false, id: nanoid() }] },
{ folder: "Folder", id: nanoid(), documents: [{ doc: "WordDoc1.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc2.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc3.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc4.doc", isChecked: false, id: nanoid() }] },
{ folder: "Folder", id: nanoid(), documents: [{ doc: "WordDoc1.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc2.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc3.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc4.doc", isChecked: false, id: nanoid() }] },
],
},
{
id: nanoid(),
Name: ListOfChannels[Math.floor(Math.random() * ListOfChannels.length)],
Files: [
{ folder: "Folder", id: nanoid(), documents: [{ doc: "WordDoc1.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc2.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc3.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc4.doc", isChecked: false, id: nanoid() }] },
{ folder: "Folder", id: nanoid(), documents: [{ doc: "WordDoc1.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc2.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc3.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc4.doc", isChecked: false, id: nanoid() }] },
{ folder: "Folder", id: nanoid(), documents: [{ doc: "WordDoc1.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc2.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc3.doc", isChecked: false, id: nanoid() }, { doc: "WordDoc4.doc", isChecked: false, id: nanoid() }] },
],
}
]
}
我尝试通过状态数组进行映射,但我得到了一个对象,其中包含不必要的数组。
const handleMoveAll = () => {
const CheckedDocuments = List.map( (connection: any) => (connection.id == connectionId) &&
connection.channels.map( (channel: any) => (channel.id == channelId) &&
channel.Files.map( (file: any) =>
file.documents.map( (doc: any) => doc.isChecked &&
doc
))
)
)
console.log(CheckedDocuments)
}
有没有更好的方法来循环通过 Files 数组检查检查的文档并将它们返回到单个数组中?
【问题讨论】:
-
您可以在同一函数中使用
flatMap来同时使用map和filter。如果条件为真,则返回[ obj ],否则返回[]。 @oakarfilter只返回映射项,无法操作它