不同的编号和相同的描述#`
const accounts = [
{ id: 1, number: '1', description: 'desc1' },
{ id: 2, number: '2', description: 'desc2' },
{ id: 3, number: null, description: null },
{ id: 4, number: '1', description: 'desc1' },
{ id: 5, number: '1', description: 'desc3' },
{ id: 6, number: '1', description: 'desc4' },
{ id: 7, number: null, description: 'desc5' },
{ id: 8, number: null, description: 'desc5' }
];
findDuplicates(accounts) {
const duplicates = accounts
.map((account) => {
return {
count: 1,
number: account.number,
description: account.description
};
})
.reduce((arr, row) => {
// try to find the current row in count array
const existingRow = arr.find((countRow) => {
return (countRow.number === row.number && countRow.description === row.description);
});
if (existingRow !== undefined) {
existingRow.count += 1;
} else { // otherwise, push it onto the count array
arr.push(row);
}`enter code here`
return arr;
}, []).filter((duplicateRows) => {
return duplicateRows.count > 1; // filter the list down to only accounts with more than 1 account
});
return duplicates;
这个简单的生成器函数技巧可以使您重复
const accounts = [
{ id: 1, number: '1', description: 'desc1' },
{ id: 2, number: '2', description: 'desc2' },
{ id: 3, number: null, description: null },
{ id: 4, number: '1', description: 'desc1' },
{ id: 5, number: '1', description: 'desc3' },
{ id: 6, number: '1', description: 'desc4' },
{ id: 7, number: null, description: 'desc5' },
{ id: 8, number: null, description: 'desc5' }
];
function *findDuplicates(accounts) {
let bucket = [];
for(let account of accounts) {
const item = bucket.find(pr => pr.number === account.number
&& pr.description === account.description);
if(!item) {
bucket = [...bucket, account];
continue;
}
yield account;
}
}
console.log([...findDuplicates(accounts)])