Search code examples
javascriptarraysnode.jsecmascript-6es6-promise

how to remove duplicates from two array of object by using ES6


i am trying to remove duplicates from userPermitDataArr.

deniedModuleArr = [ { moduleName: 'Transaction fee',
    url: '/transactionfee',
    moduleClassName: 'TransactionFee' },
  { moduleName: 'Refund View',
    url: '/refundview',
    moduleClassName: 'RefundView' } ]

userPermitDataArr = [ { moduleName: 'Transaction fee',
    url: '/transactionfee',
    moduleClassName: 'TransactionFee' },
  { moduleName: 'Refund View',
    url: '/refundview',
    moduleClassName: 'RefundView' },
  { moduleName: 'Cancellation',
    url: '/cancellation',
    moduleClassName: 'Cancellation' },
  { moduleName: 'Transaction',
    url: '/transaction',
    moduleClassName: 'Transaction' } ]


 [{ moduleName: 'Cancellation',
    url: '/cancellation',
    moduleClassName: 'Cancellation' },
  { moduleName: 'Transaction',
    url: '/transaction',
    moduleClassName: 'Transaction' } ]

Solution

  • From the naming convention & the expected result it seems you need to filter out denied modules from user permit modules. You can try following.

    Firstly create a Set of userPermitDataArr and then filter userPermitDataArr based on the above created set.

    let deniedModuleArr = [{ moduleName: 'Transaction fee',url: '/transactionfee',moduleClassName: 'TransactionFee' },{ moduleName: 'Refund View',url: '/refundview',moduleClassName: 'RefundView' } ];
    let userPermitDataArr = [ { moduleName: 'Transaction fee',url: '/transactionfee', moduleClassName: 'TransactionFee' },{ moduleName: 'Refund View',url: '/refundview',moduleClassName: 'RefundView' },{ moduleName: 'Cancellation',url: '/cancellation',moduleClassName: 'Cancellation' },{ moduleName: 'Transaction',url: '/transaction',moduleClassName: 'Transaction' } ];
        
    let deniedModuleSet = deniedModuleArr.reduce((a,c) => a.add(c.moduleName), new Set());
    userPermitDataArr = userPermitDataArr.filter(v => !deniedModuleSet.has(v.moduleName));
    console.log(userPermitDataArr);