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' } ]
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);