Search code examples
javascriptarraysjavascript-objects

Removing specific duplicates from an array Javascript


I have an array like this

const ex = [
    {
        name: 'John',
        sender: "12345678",
        receiver: {
            name: "simi",
            age: 20,
            city: "New York"
        },
         time: 12:30 am
    },
    {
        name: 'Jane',
        sender: {
            name: "simi",
            age: 20,
            city: "New York"
        },
        receiver: "12345678",
        time: 1:00 pm
    }
]

In this array, the sender property value in the first object is equal to the receiver property value in the second object. Is there a way I can check and produce only one occurence of this value, that is, just one object in which the value is present


Solution

  • Try this:

    const ex = [
        {
            name: 'John',
            sender: "12345678",
            receiver: {
                name: "simi",
                age: 20,
                city: "New York"
            },
             time: "12:30 am"
        },
        {
            name: 'Jane',
            sender: {
                name: "simi",
                age: 20,
                city: "New York"
            },
            receiver: "12345678",
            time: "1:00 pm"
        }
    ]
    
    let map = {}
    ex.forEach(e => {
         let obj = null;
         if(e.sender instanceof Object) 
              obj = e.sender;
         else if(e.receiver instanceof Object) 
              obj = e.receiver;
         if(!obj) return;
         let key = obj.name+obj.age+obj.city;
         if(!map[key])
              map[key] = e;
    });
    
    console.log(Object.values(map));