簡體   English   中英

將一個數組中的匹配值添加到一組原始對象

[英]Add matching values from one array to an array of original object

我有一個如下所示的users列表:

[
    {
        user: a,
        email: a.com,
        events: []
    },
    {
        user: b,
        email: b.com
        events: []
    }       
]

和一個events列表:

[
    {
        user: a,
        start: 2020-01-01
        end: 2020-01-02
    },
    {
        user: a,
        start: 2020-02-01
        end: 2020-02-02
    },    
    {
        user: b,
        start: 2020-03-01
        end: 2020-03-02
    },     
]

我正在嘗試將用戶的事件列表組合到原始用戶對象上的數組中,如下所示:

[
    {
        user: a,
        email: a.com,
        events: [
            {
                start: 2020-01-01
                end: 2020-01-02
            },
            {
                start: 2020-02-01
                end: 2020-02-02
            }
        ]
    },
    {
        user: b,
        email: b.com,
        events: [
            {
                start: 2020-03-01
                end: 2020-03-02
            }
        ]
    }       
]

我最初的直覺是簡單地遍歷每個用戶的事件列表以及它們與user值匹配的user ,將一個新對象推送到 users.events 數組。 但是,我不是 JS 專家,我確​​信可以使用assign/filter/map/reduce 或lodash 的組合來簡化此類問題。 任何幫助是極大的贊賞!

請試試這個:

const userEvents = [
    {
        user: a,
        email: a.com,
        events: []
    },
    {
        user: b,
        email: b.com,
        events: []
    }       
]

const userStartEnds = [
    {
        user: a,
        start: 2020-01-01,
        end: 2020-01-02
    },
    {
        user: a,
        start: 2020-02-01,
        end: 2020-02-02
    },    
    {
        user: b,
        start: 2020-03-01,
        end: 2020-03-02
    },     
]

[
    {
        user: a,
        email: a.com,
        events: [
            {
                start: 2020-01-01,
                end: 2020-01-02
            },
            {
                start: 2020-02-01,
                end: 2020-02-02
            }
        ]
    },
    {
        user: b,
        email: b.com,
        events: [
            {
                start: 2020-03-01,
                end: 2020-03-02
            }
        ]
    }       
]

userEvents.map((userEvent) => ({
  ...userEvent,
  events: userStartEnds
    .filter(({ user }) => (userEvent.email === user.email))
    .map(({ start, end }) => ({ start, end }))
}))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM