Get list of duplicate objects in an array of objects

前端 未结 7 904
你的背包
你的背包 2020-12-14 22:11

I am trying to get duplicate objects within an array of objects. Let\'s say the object is like below.

values = [
  { id: 10, name: \'someName1\' },
  { id: 1         


        
7条回答
  •  余生分开走
    2020-12-14 22:41

    Let's say you have:

    arr = [
        { id:10, name: 'someName1' },
        { id:10, name: 'someName2' },
        { id:11, name: 'someName3' },
        { id:12, name: 'someName4' }
    ]
    

    So, to get unique items:

    unique = arr
         .map(e => e['id'])
         .map((e, i, final) => final.indexOf(e) === i && i)
         .filter(obj=> arr[obj])
         .map(e => arr[e]);
    

    Then, result will be

    unique = [
         { id:10, name: 'someName1' },
         { id:11, name: 'someName3' },
         { id:12, name: 'someName4' }
    ]
    

    And, to get duplicate ids:

    duplicateIds = arr
         .map(e => e['id'])
         .map((e, i, final) => final.indexOf(e) !== i && i)
         .filter(obj=> arr[obj])
         .map(e => arr[e]["id"])
    

    List of IDs will be

    duplicateIds = [10]
    

    Thus, to get duplicates objects:

    duplicate = arr.filter(obj=> dublicateIds.includes(obj.id));
    

    Now you have it:

    duplicate = [
        { id:10, name: 'someName1' },
        { id:10, name: 'someName2' }
    ]
    

    Thanks https://reactgo.com/removeduplicateobjects/

提交回复
热议问题