繁体   English   中英

如何使用 ES6 从两个对象数组中删除重复项

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

我正在尝试从 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' } ]

从命名约定和预期结果来看,您似乎需要从用户许可模块中过滤掉被拒绝的模块。 您可以尝试以下。

首先创建一个userPermitDataArrSet ,然后根据上面创建的set 过滤userPermitDataArr

 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);

使用HashSet这种方法也可用于检查嵌套结构的对象相等性。

const aStr = firstArr.map(o => JSON.stringify(o));
const bStr = secondArr.map(o => JSON.stringify(o));

const set = new Set();
set.add(...aStr);
set.add(...bStr);

console.log([...set.values()].map(o => JSON.parse(o)));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM