Home > Back-end >  How to rearrange array of objects into object of objects in node js?
How to rearrange array of objects into object of objects in node js?

Time:03-07

I have Java script array like this:

arr =   [
            {
                "email": "[email protected]",
                "phoneNumber": "  255 638-1527",
            },
            {
                "email": "@gmail.com",
                "phoneNumber": " 255 532-1587",
            },
            {
                "email": "@gmail.com",
                "phoneNumber": " 255 613-1587",
                "info": [
                    {
                        "date": "2022-02-19",
                        "count": 1
                    },
                    {
                        "date": "2022-03-17",
                        "count": 9
                    },
                    {
                        "date": "2021-02-10",
                        "count": 10
                    }]
           }
    ]

I need to convert above array of objects arr into object with key-value pair like below

arr = 

        {
            " 255 638-1527":{
                "email": "[email protected]",
                "phoneNumber": " 255 638-1527",
            },
            " 255 532-1587":{
                "email": "@gmail.com",
                "phoneNumber": " 255 532-1587",
            },
            " 255 613-1587":{
                "email": "@gmail.com",
                "phoneNumber": " 255 613-1587",
                "info": [
                    {
                        "date": "2022-02-19",
                        "count": 1
                    },
                    {
                        "date": "2022-03-17",
                        "count": 9
                    },
                    {
                        "date": "2021-02-10",
                        "count": 10
                    }]
           }

I need the it like this JSON, in the form of key-value pair. How can I achieve this?

I need the data like this in order to render the output, can someone please help me with this?

CodePudding user response:

Use Object.fromEntries like this:

const arr = [{"email": "[email protected]","phoneNumber": "  255 638-1527",},{"email": "@gmail.com","phoneNumber": " 255 532-1587",},{"email": "@gmail.com","phoneNumber": " 255 613-1587","info": [{"date": "2022-02-19","count": 1},{"date": "2022-03-17","count": 9},{"date": "2021-02-10","count": 10}]}];
    
const result = Object.fromEntries(arr.map(item =>
    [item.phoneNumber, item]
));

console.log(result);

  • Related