首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果为真,则从map函数返回对象。

如果为真,则从map函数返回对象。
EN

Stack Overflow用户
提问于 2021-12-03 20:04:42
回答 1查看 139关注 0票数 0

只有在检查文档时,我才希望从map函数返回对象。这是我的州结构。

代码语言:javascript
复制
    {
        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() }] },
                ],
            }
        ]
    }

我试图通过状态数组进行映射,但是我使用它得到了一个带有非必要数组的对象。

代码语言:javascript
复制
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数组,检查所检查的文档并在单个数组中返回它们?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-03 20:34:38

感谢HagaiHarari和oakar。

代码语言:javascript
复制
const handleMoveAll = () => {

        const CheckedDocuments = List.flatMap((connection: any) => (connection.id == connectionId) ?
            connection.channels.flatMap((channel: any) => (channel.id == channelId) ?
                channel.Files.flatMap( (file: any) =>
                    file.documents.filter( (doc: any) => { if(doc.isChecked) return doc }
                    ))
                : []
            )
            : []
        )

        console.log(CheckedDocuments)
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70220086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档