Search code examples
javascriptlodash

Lodash remove duplicates from array


This is my data:

[
    {
        url: 'www.example.com/hello',
        id: "22"    
    },
    {
        url: 'www.example.com/hello',
        id: "22"    
    },
    {
        url: 'www.example.com/hello-how-are-you',
        id: "23"    
    },
    {
        url: 'www.example.com/i-like-cats',
        id: "24"    
    },
    {
        url: 'www.example.com/i-like-pie',
        id: "25"    
    }
]

With Lodash, how could I remove objects with duplicate id keys? Something with filter, map and unique, but not quite sure.

My real data set is much larger and has more keys, but the concept should be the same.


Solution

  • _.unique no longer works for the current version of Lodash as version 4.0.0 has this breaking change. The functionality of _.unique was splitted into _.uniq, _.sortedUniq, _.sortedUniqBy, and _.uniqBy.

    You could use _.uniqBy like this:

    _.uniqBy(data, function (e) {
      return e.id;
    });
    

    ...or like this:

    _.uniqBy(data, 'id');
    

    Documentation: https://lodash.com/docs#uniqBy


    For older versions of Lodash (< 4.0.0 ):

    Assuming that the data should be uniqued by each object's id property and your data is stored in data variable, you can use the _.unique() function like this:

    _.unique(data, function (e) {
      return e.id;
    });
    

    Or simply like this:

    _.uniq(data, 'id');