Tengo el siguiente código que funciona bien `
someVar.getNftsByCollections(['abcs']).then((obj) => { obj.filter(nft => nft.sold === true) .map(nft => console.log(nft)) }); })`y me consuelan los datos como este
{ name: "Common Pass" owner: "abc1" placeholderNft: false position: 1509 price: 1000}Ahora tengo 100 de objetos como ese, lo cual me consuela, pero ahora quiero encontrar el recuento de propietarios duplicados, entonces, ¿cómo puedo extender mi código? En palabras simples, por ejemplo, hay otros registros con el mismo propietario abc1 como alrededor de 12, ¿cómo puedo lograr esto?
var dublicates = {} someVar.getNftsByCollections(['abcs']).then((obj) => { obj.filter(nft => { dublicates[nft.owner] = dublicates[nft.owner] ? dublicates[nft.owner] + 1 : dublicates[nft.owner] return(nft.sold === true) }) .map(nft => console.log(nft)) }); }) actural_dublicate =Object.keys(dublicates).filter(key => dublicates[key] > 1)Puede usar una reduce para iterar sobre esta matriz y generar un conteo en el formato.
{ owner: 'abc1', count: 12 }Con eso tendrás:
someVar.getNftsByCollections(['abcs']).then((obj) => { .filter((nft) => nft.sold) .reduce((accObj, nft) => { const owner = nft.owner; const accountedOwner = accObj.find((obj) => obj.owner === owner); if (!accountedOwner) { accObj.push({ owner, count: 1 }); } else { accountedOwner.count++; } return accObj; }, []); }) Puedes jugar con eso en:
https://codesandbox.io/s/happy-frog-bx6kxm?file=/src/App.js